提問:爲什麼要把網站升級到 https?
解答:HTTPS 是一種基於SSL 協議的網站加密傳輸協議。網站安裝 SSL 證書後,使用 HTTPS 加密協議訪問,可激活客戶端瀏覽器到網站服務器之間的 SSL 加密通道(SSL協議),從而實現高強度雙向加密傳輸,防止傳輸數據被泄露或篡改。HTTPS 也就是 HTTP + SSL,是 HTTP 的安全版。
那如何配置呢,別慌,我來也~
首先,需要注意的一點:一張單域名版證書可以保護一個域名,當申請證書的域名是以“www”開頭的子域名時,默認也可以保護不帶“www”的主域名,例如爲 www.sslzhengshu.com 申請SSL, 則 sslzhengshu.com 也可以在該SSL的保護下面;反正,爲 sslzhengshu.com 申請SSL, 則 www.sslzhengshu.com也可以在該SSL的保護下面。因此無需重複申請。如果您爲 login.sslzhengshu.com 申請 SSL, 則 sslzhengshu.com 默認是不會被保護的。
- 購買 SSL 證書,我選擇的是免費版的
- 證書申請(證書綁定域名)
填寫證書綁定的域名、申請人信息,選擇域名驗證方式,驗證並提交審覈 - 證書下載
在 SSL 證書頁面,點擊已簽發標籤,定位到需要下載的證書,點擊右側的下載,下載 Nginx 版證書壓縮包到本地。 - 在服務器上安裝 SSL 證書並重啓nginx
第一步:解壓 Nginx 證書(有 .pem 和 .key 爲後綴的兩個文件)。
第二步:在 Nginx 的安裝目錄下創建 cert 目錄,將下載的兩個文件上傳到 cert 目錄中。
第三步:打開Nginx 的安裝目錄下的配置文件 conf.d/*.conf,替換爲以下內容:
第四步:檢查 nginx 配置 nginx -tserver { listen 80; server_name localhost; rewrite ^(.*)$ https://$host$1 permanent; //實現http訪問自動跳轉到https location / { index index.html index.htm; } server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; ssl_certificate cert/domain name.pem; #將domain name.pem替換成您證書的文件名。 ssl_certificate_key cert/domain name.key; #將domain name.key替換成您證書的密鑰文件名。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { index index.html index.htm; }
此時,會有一個警告:nginx: [warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead in /etc/nginx/conf.d/www.test.com.conf:12
解決:去掉ssl on;將listen 443 改爲listen 443 ssl;
執行nginx -t ok了!
第五步:重啓 Nginx 服務器 nginx -s reload。 - 進入阿里雲/騰訊雲安全組,開放 443 端口
- 雲服務器的防火牆開啓 443 端口
firewall-cmd --zone=public --add-port=443/tcp --permanent 增加443端口
firewall-cmd --reload 重啓防火牆 - 訪問,成功~