HTTPS
SSL證照 簽發 和 應用
- SSL證照服務(Alibaba Cloud SSL Certificates Service)是由阿里雲聯合中國及中國以外地域多家數字證照頒發機構( CA,Certificate Authority),在阿里雲平臺上直接提供的數字證照申請和部署服務。SSL證照服務幫助您以最小的成本將服務從HTTP轉換成HTTPS,實現網站或移動應用的身份驗證和資料加密傳輸。
# 阿里雲SSL證照和HTTPS的關係
- 可以通過阿里雲SSL證照服務購買SSL證照,並向CA中心提交證照申請,直到證照成功簽發;您將已簽發的證照安裝到Web伺服器後,則Web服務將會通過HTTPS加密協議來傳輸資料。
- HTTPS加密傳輸協議可啟用客戶端瀏覽器到網站伺服器之間的SSL加密通道(SSL協議),從而實現高強度雙向加密傳輸,防止傳輸資料被洩露或篡改。
# 為什麼網站需要HTTPS
- 防劫持、防篡改、防監聽:使用SSL證照實現網站的HTTPS化,可以對網站使用者與網站間的互動訪問全鏈路資料進行加密,從而實現傳輸資料的防劫持、防篡改、防監聽。
- 提升網站的搜尋排名:使用SSL證照實現網站的HTTPS化後,網站在搜尋引擎顯示結果中的排名將會更高,有利於提升網站的搜尋排名和站點的可信度。
- 提升網站的訪問流量:使用SSL證照實現網站的HTTPS化,可以強化網站在使用者側的身份可信程度,使網站使用者能更安心地訪問網站,提升網站的訪問流量。
證照購買
# 1. 支援選購的證照型別
- 阿里雲SSL證照服務支援購買DV證照、OV證照和EV證照三種型別的證照。不同型別證照的安全性和適用的網站型別不同,具體如下所示。
證照申請
- 購買SSL證照訂單例項後,您還必須通過SSL證照服務向CA中心提交證照申請。只有當CA中心稽核通過您的證照申請後,才會為您簽發證照,然後您才可以將已簽發的證照安裝到伺服器,實現網站HTTPS。
- 參考文件:https://help.aliyun.com/document_detail/98574.htm?spm=a2c4g.11186623.2.10.11743147W9oWm9#concept-wxz-3xn-yfb)
證照安裝
- 通過SSL證照服務購買和簽發證照後,可以將已簽發的證照下載並安裝到Nginx(或Tengine)伺服器上。
- 下載證照到本地
# 1. 登入SSL證照控制檯。
# 2. 定位到要下載的證照,單擊操作列下的下載。
# 3. 在證照下載頁面,定位到Nginx伺服器,單擊操作列下的下載。該操作會將Nginx伺服器證照壓縮包下載到本地,並儲存在瀏覽器的預設下載位置。
# 4. 開啟瀏覽器的預設下載位置,解壓已下載的Nginx證照壓縮包檔案。解壓後您將會獲得以下檔案:
- 在Nginx獨立伺服器上安裝證照
-
登入Nginx伺服器
使用遠端登入工具(例如,PuTTY、Xshell)登入伺服器。
-
執行以下命令,在Nginx安裝目錄(預設為/usr/local/nginx/conf)下建立一個用於存放證照的目錄(命名為cert)。
# 進入Nginx預設安裝目錄。如果您修改過預設安裝目錄,請根據實際配置進行調整。
$ cd /usr/local/nginx/conf
# 建證照目錄,命名為cert。
$ mkdir cert
- 使用遠端登入工具(例如,PuTTY、Xshell)附帶的本地檔案上傳功能,將本地證照檔案和金鑰檔案上傳到Nginx伺服器的證照目錄(示例中為/usr/local/nginx/conf/cert)。
- 注意:如果您在申請證照時將CSR生成方式設定為手動填寫,請將您手動建立的證照金鑰檔案上傳到/usr/local/nginx/conf/cert目錄。
- 編輯Nginx配置檔案(nginx.conf),修改與證照相關的配置內容。
# 備份配置檔案
# nginx.conf預設儲存在/usr/local/nginx/conf目錄下。如果您修改過nginx.conf的位置,請/usr/local/nginx/conf/nginx.conf替換成修改後的位置。
$ cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# 開啟配置檔案
$ vi /usr/local/nginx/conf/nginx.conf
- 修改nginx.conf檔案
yourdomain.com:替換成證照繫結的域名。
如果您購買的是單域名證照,需要修改為單域名(例如www.aliyun.com);如果您購買的是萬用字元域名證照,則需要修改為萬用字元域名(例如*.aliyun.com)。cert-file-name.pem:替換成您在步驟3上傳的證照檔案的名稱。
cert-file-name.key:替換成您在步驟3上傳的證照金鑰檔案的名稱。>
nginx.conf:
#以下屬性中,以ssl開頭的屬性表示與證照配置有關。
server {
listen 443 ssl;
#配置HTTPS的預設訪問埠為443。
#如果未在此處配置HTTPS的預設訪問埠,可能會造成Nginx無法啟動。
#如果您使用Nginx 1.15.0及以上版本,請使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain.com; #需要將yourdomain.com替換成證照繫結的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem; #需要將cert-file-name.pem替換成已上傳的證照檔案的名稱。
ssl_certificate_key cert/cert-file-name.key; #需要將cert-file-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; #表示使用的TLS協議的型別。
ssl_prefer_server_ciphers on;
location / {
root html; #站點目錄。
index index.html index.htm;
}
}
注:若使用以上模板配置訪問不成功 則使用下面這個模板
nginx.conf
# HTTPS server
#
server {
listen 443 ssl;
server_name xxx.com;
ssl_certificate cert/xxx.pem;
ssl_certificate_key cert/xxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
# 這是用於轉發 其他埠的 如, IP:埠 進行訪問時可以通過設定代理變成 IP 訪問
location / {
proxy_pass http://127.0.0.1:65432;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}