http升級至https

http升級至https

獲取證書

升級到https第一步就是獲取一張證書。證書是一個二進制文件,包含經過認證的網站公鑰和一些元數據,需要自己購買。證書詳細介紹

  • 安裝certbot

用的是免費的Let’s Encrypt,根據教程選擇相應服務器工具和系統版本直接安裝。

我用的是Ubuntu16.04+Tomcat9:

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot 
  • 生成證書:
sudo certbot certonly --webroot -w /opt/tomcat/webapps/flyme -d flyzy2005.cn -d www.flyzy2005.cn

/opt/tomcat/webapps/flyme是你項目的路徑,-d(domain)後面接的是域名,多個就填多個。如果有多個項目路徑,就接多個-w。

按照提示輸入自己的email,再填一些信息就會幫你生成一個證書。

  • 查看證書:
sudo certbot certificates

//output
Found the following certs:
  Certificate Name: flyzy2005.cn
    Domains: flyzy2005.cn www.flyzy2005.cn
    Expiry Date: 2017-08-31 03:54:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/flyzy2005.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/flyzy2005.cn/privkey.pem

更多的重新生成證書、廢棄證書、刪除證書等可以查看官方API

生成JKS

  • 拷貝副本
sudo cp /etc/letsencrypt/live/flyzy2005.cn/privkey.pem /opt/jks
sudo cp /etc/letsencrypt/live/flyzy2005.cn/fullchain.pem /opt/jks
  • 生成.p12文件
sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat
  • 生成.jks證書
sudo keytool -importkeystore -deststorepass yourJKSpass -destkeypass yourKeyPass -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass yourPKCS12pass -alias tomcat

2個證書一共用到4個密碼,可以全部設置一樣的,方便配置。

配置tomcat

  • 配置tomcat目錄下conf/server.xml
<Connector port="443" protocol="org.apache.coyote.http11.HttpNio11Protocol" 
            URIEncoding="UTF-8" maxThreads="150" SSLEnabled="true" 
            scheme="https" secure="true" clientAuth="false" 
            sslProtocol="TLS" 
            keystoreFile="/opt/jks/MyDSKeyStore.jks" 
            keystorePass="yourJKSpass" 
            keyAlias="tomcat" 
            keyPass="yourKeyPass"/>

keystoreFile可以是/開頭的絕對路徑,也可以是conf/MyDSKeyStore.jks這樣相對路徑(最終路徑是/opt/tomcat/conf/MyDSKeyStore.jks)

protocol根據你的tomcat版本設置不同的protocol

https的默認端口是443,就像http的默認端口是80
- 讓http請求自動轉成https
1. 修改conf/server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
  1. 修改conf/web.xml
<web-app>
    //...
    //...
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Protected Context</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <!-- auth-constraint goes here if you requre authentication -->
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>

 </web-app>

https://my.oschina.net/chaon/blog/717902

https://certbot.eff.org/docs/using.html#renewal

https://certbot.eff.org/#ubuntuxenial-other

http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章