本文以阿裡雲為例說明。
一、阿裡雲http遷移到https需要申請ssl證書
二、阿裡雲數字證書管理服務支援購買DV證書、OV證書和EV證書三種類型的SSL證書。不同類型證書的安全性、支援的證書品牌和适用的網站類型不同,具體如下表所示。
DV證書:域名驗證型證書,證書稽核方式為通過驗證域名所有權即可簽發證書。此類型證書适合個人和小微企業申請,價格較低,申請快捷,但是證書中無法顯示企業資訊,安全性較差。如果是部署在web網站上,浏覽器中顯示鎖型标志。能起到加密傳輸的作用,但無法向使用者證明網站的真實身份。
OV證書:企業驗證型證書,證書稽核方式為通過驗證域名所有權和申請企業的真實身份資訊才能簽發證書。目前OV類型證書是全球運用最廣,相容性最好的證書類型。此證書類型适合中型企業和網際網路業務申請。如果是部署在web網站上,浏覽器中顯示鎖型标志,并能通過點選檢視到企業相關資訊。支援ECC高安全強度加密算法,加密資料更加安全,加密性能更高。
EV證書:增強驗證型證書,證書稽核級别為所有類型最嚴格驗證方式,在OV類型的驗證基礎上額外驗證其他企業的相關資訊,比如銀行開戶許可證書。EV類型證書多使用于銀行、金融、證券、支付等高安全标準行業。如果是部署在web網站上,其在位址欄可以顯示獨特的EV綠色辨別位址欄,最大程度的辨別出網站的可信級别。支援ECC高安全強度加密算法,加密資料更加安全,加密性能更高。
三、阿裡雲的産品規格
按域名類型分為單域名、多域名、通配符,規格如下圖
四、在Nginx伺服器上安裝證書
前提條件
已經通過數字證書管理服務控制台簽發證書。
已準備好遠端登入工具(例如PuTTY、Xshell),用于登入您的Nginx或Tengine伺服器。
1、使用遠端登入工具,登入Nginx伺服器。
2、執行以下指令,在Nginx安裝目錄(預設為/data/nginx/conf)下建立一個用于存放證書的目錄。
cd /data/nginx/conf
mkdir cert
給目錄權重限
chmod 777 cert
3、使用遠端登入工具附帶的本地檔案上傳功能,将證書檔案和私鑰檔案上傳到Nginx伺服器的證書目錄
4、編輯Nginx配置檔案nginx.conf,修改與證書相關的配置。
vi /data/nginx/conf/nginx.conf
按i進入編輯模式
#以下屬性中,以ssl開頭的屬性表示與證書配置有關。
server {
#配置HTTPS的預設通路端口為443。
#如果未在此處配置HTTPS的預設通路端口,可能會造成Nginx無法啟動。
#如果您使用Nginx 1.15.0及以上版本,請使用listen 443 ssl代替listen 443和ssl on。
listen 443 ssl;
#填寫證書綁定的域名
server_name <yourdomain>;
root html;
index index.html index.htm;
#填寫證書檔案名稱
ssl_certificate cert/<cert-file-name>.pem;
#填寫證書私鑰檔案名稱
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_timeout 5m;
#表示使用的加密套件的類型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的TLS協定的類型,您需要自行評估是否配置TLSv1.1協定。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#Web網站程式存放目錄
root html;
index index.html index.htm;
}
}
修改完成後,按Esc鍵、輸入:wq!并按Enter鍵,儲存修改後的配置檔案并退出編輯模式。
重新開機nginx
./nginx -s reload
配置試例
server {
#listen 80;
listen 443 ssl;
server_name cloud.dymyth.cn;
client_max_body_size 100M;
access_log logs/wise-cloud.access.log;
error_log logs/wise-cloud.error.log;
#填寫證書檔案名稱
ssl_certificate cert/9584337_cloud.iluhao.cn.pem;
#填寫證書私鑰檔案名稱
ssl_certificate_key cert/9584337_cloud.iluhao.cn.key;
ssl_session_timeout 5m;
#表示使用的加密套件的類型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的TLS協定的類型,您需要自行評估是否配置TLSv1.1協定。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
## send request back to apache ##
location /api {
proxy_pass http://yunsaas;
#Proxy Settings
include commonProxy.conf;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /oss {
proxy_pass http://ossserver;
#Proxy Settings
include commonProxy.conf;
}
location /ossfiles {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
#add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# 自定義标題和标題各種浏覽器*應該*可以,但不是
#
add_header 'Access-Control-Allow-Headers' 'Access-Control-Allow-Origin,X-Tenant,Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
#
#
#
add_header 'Access-Control-Max-Age' 60;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' $http_origin;
#add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Access-Control-Allow-Origin,X-Tenant,Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' $http_origin;
#add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Access-Control-Allow-Origin,X-Tenant,Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
root ./;
index index.html;
}
location / {
add_header Cache-Control no-cache;
add_header Pragma no-cache;
add_header Expires 0;
root 8080yun;
index index.html;
try_files $uri /index.html; #此處為單頁面部署類型
}
}
server {
listen 80;
#填寫證書綁定的域名
server_name cloud.iluhao.cn;
#将所有HTTP請求通過rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}