1. 程式人生 > >網站由Http切換至Https-來點啤酒

網站由Http切換至Https-來點啤酒

申請證書

我們這裡以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服務上去