Nginx服務器證書部署
發布時間:2018-01-17 16:15:25
依賴建議
l??SSL卸載驅動。建議:openssl版本1.1.0f+。
l??nginx版本Stable version:最新穩定版,生產環境上建議使用的版本。
獲取證書
MPKI方式:
1.???登錄https://mpki.trustasia.com。
2.???證書下載pem(nginx SLB)格式,會得到一個zip的壓縮包,解壓后有兩個文件,分別是crt和key后綴。
非MPKI方式:
1.??CSR對應的key文件
2.??證書郵件里提取代碼,把-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----(包括開頭和結尾,不用換行)復制到txt文本文件里,然后保存為crt后綴;這樣也就獲取到nginx用的2個文件了。
SSL相關配置
到nginx的conf目錄,找到nginx.conf文件,修改或者配置這樣一段
server?{listen?80?default_server;listen?[::]:80?default_server;#?強制跳轉return?301?https://$host$request_uri;
}?
server?{listen?443?ssl?http2;listen?[::]:443?ssl?http2;???#IPv6支持?#RSA證書ssl_certificate?/xxx/xx/rsa.pem;ssl_certificate_key?/xxx/xx/rsa.key;#ECC證書,可選,需要1.11版本支持ssl_certificate?/xxx/xx/ecc.pem;;ssl_certificate_key?/xxx/xx/ecc.key;;ssl_session_timeout?1d;ssl_session_cache?shared:SSL:50m;ssl_session_tickets?off;#?A+級配置.ssl_protocols??TLSv1?TLSv1.1?TLSv1.2;ssl_ciphers?'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';ssl_prefer_server_ciphers?on;#?HSTS?(需要編譯帶ngx_http_headers_module模塊)?(15768000?秒=?6?月)add_header?Strict-Transport-Security?max-age=15768000;#?OCSP?Stapling?裝訂ssl_stapling?on;ssl_stapling_verify?on;
}
下面為配置文件參數說明:
listen?443
SSL訪問端口號為443
ssl???????on
啟用SSL功能
ssl_certificate
證書文件server.crt
ssl_certificate_key
私鑰文件server.pem
ssl_protocols
使用的協議
ssl_ciphers
配置加密套件,寫法遵循openssl標準
配置完成后,先用sbin/nginx –t來測試下配置是否有誤,正確無誤的話,建議重啟nginx。
http跳轉https(建議而非強制)
對于用戶,不是不知道https,就是知道https也因為懶,不愿意輸入https。這樣就有一個需求,讓服務器自動把http的請求重定向到https。
在服務器這邊的話配置的話,可以在頁面里加js腳本,也可以在后端程序里寫重定向,當然也可以在web服務器來實現跳轉。Nginx是支持rewrite的(只要在編譯的時候沒有去掉pcre)
在http的server里
增加
return 301 https://$host$request_uri;
或者
rewrite???^(.*) https://$host$1 permanent;
這樣就可以實現80進來的請求,重定向為https了。
檢測
https的端口沒做限制后(防火墻放行,端口轉發正常),到https://myssl.com進行檢測
評級達到B以上,在安全和兼容方面是較不錯的。
轉自:https://www.trustasia.com/news-201801-nginx-server-certificate-deployment
轉載于:https://blog.51cto.com/sandshell/2157254