記錄一份我理解並操作過的Nginx對於使用SSL安全證書的配置。參考過文章:https://help.aliyun.com/document_detail/98728.html?spm=5176.b657008.help.dexternal.f85a56a7KtWCVg。
- 配置前,確定下文件有沒有准備好,一份SSL證書、一份對應的私鑰KEY文件、一台nginx服務,確定都准備好了,便可以開始配置。
- 先將nginx的配置文件備份,再打開nginx服務的配置文件,一般都是nginx.conf。可以直接執行:nginx -t;來獲取nginx的配置文件目錄,如圖:
- 在配置文件中代碼片段 http{}中找到 server{}代碼段,在server中配置以下參數:
listen 端口 ssl; #監聽的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443 server_name 域名地址; #需要證書驗證的域名。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";#開啟HSTS,通知瀏覽器使用https訪問。該配置在第一次訪問或緩存被清除時有被劫持風險 rewrite ^(.*)$ https://$host$1; #將所有HTTP請求通過rewrite指令重定向到HTTPS。該配置有被劫持風險 ssl on; #打開ssl支持,nginx 1.15.0以下的需要配置該參數。 ssl_certificate cert-file-name.crt; #指定crt文件所在路徑,如果寫相對路徑,必須把該文件和nginx.conf文件放到一個目錄下。 ssl_certificate_key cert-file-name.key; #指定私鑰文件key所在路徑,如果寫相對路徑,必須把該文件和nginx.conf文件放到一個目錄下。 ssl_session_timeout 5m; # 請求超時時長 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL協議 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#配置ssl加密算法,多個算法用:分隔,ALL表示全部算法,!表示不啟用該算法,+表示將該算法排到最后面去。 ssl_prefer_server_ciphers on; #如果不指定默認為off,當為on時,在使用SSLv3和TLS協議時,服務器加密算法將優於客戶端加密算法。 ssl_verify_client on;#打開客戶端驗證支持,可選配置,客戶端不驗證可不配 ssl_client_certificate ca.crt; #配置客戶端驗證服務器所需的根證書公鑰文件所在位置,可選配置,客戶端不驗證可不配
4. 配置完成后,nginx -t;測試配置文件是否正確,再使用命令:nginx -s reload; 加載nginx的配置文件並重啟
5. 在瀏覽器中輸入:https://域名地址,驗證SSL是否配置成功