網站由Http切換至Https-來點啤酒
阿新 • • 發佈:2018-12-21
申請證書
我們這裡以freessl為例;這個網站有免費的證書;商業性質網站推薦使用付費的證書;
這裡可以按需要選擇;如果你解析了很多的子域名;如a.domain.com,b.domian.com;推薦使用Let's Encrypt V2 支援萬用字元;*.domain.com
這裡填入郵箱;因為證書有效期原因;在證書即將到期時;你可能會收到證書提供者的提醒郵件,這裡確認建立以後;會得到一個私鑰的壓縮包。
這一步要開始驗證域名,證書提供者需要驗證你是不是域名的所有者,這時你需要登陸到你的域名控制檯,如騰訊雲,阿里雲的控制檯,新增兩條txt記錄,
把上圖的要求新增的記錄值在你的控制檯一次新增;稍等幾分鐘,然後點選驗證,等待驗證完成。
這時候你可以點選下載證書了,這個壓縮包包含一個私鑰和pem格式證書
#1、PEM 格式的證書檔案適合哪些伺服器? #Nginx、Apache、Candy Server #2、CRT 格式的證書檔案怎麼獲得? #直接將 .pem 字尾改為 .crt 就可以 #3、JKS 格式的證書檔案怎麼獲得? #JAVA 專屬格式,可用於 HIS、jboss、Jetty,需要通過轉換獲得:#https://myssl.com/cert_convert.html #4、PFX/P12 格式的證書檔案怎麼獲得? #PKCS12 格式證書,可用於 IIS6、IIS7、IIS8、xchange、程式碼簽名,需要通過轉換獲得:#https://myssl.com/cert_convert.html #或者通過 OpenSSL 自助轉換: #openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx
上傳證書到服務
這一步就大家隨意;用ftp;sftp等等
你的伺服器或者說容器執行使用者需要對該目錄有訪問許可權
setfacl -R -m user:tomcat:rwx 證書目錄
修改伺服器配置
我這裡已nginx伺服器為例,nginx支援pem格式;但網上很多使用crt格式;關於格式如何轉換上文中已經提到過了。
server { listen 80; listen 443 ssl; server_name 證書申請域名; ssl_certificate /證書根目錄/full_chain.crt; ssl_certificate_key /證書根目錄/private.key; location / { proxy_pass http://server/; client_max_body_size 50m; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
然而使用者很多時候只會輸入域名;不會輸入協議頭;此時使用者等於訪問不到https地址;這時我們需要做如下調整
server { listen 80; server_name 證書申請域名; rewrite ^(.*) https://$server_name$1 permanent; } server { # listen 80; listen 443 ssl; server_name 證書申請域名; ssl_certificate /證書根路徑/full_chain.crt; ssl_certificate_key /證書根路徑/private.key; location / { proxy_pass http://server/; client_max_body_size 50m; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
如此配置後;我們重啟服務;
service nginx force-reload
此時你再訪問;僅需輸入域名;將會自動跳轉到https服務上去