一,配置https證書的意義
https協議是由SSL+http協議構建的安全協議,支持加密傳輸和身份認證,
安全性比http要更好,因為數據的加密傳輸,更能保證數據的安全性和完整性
例如:不使用https,網站就比較容易被網絡劫持,
網絡劫持會導致頁面上出現一些垃圾廣告,或被引導到無關的網站,
使用https可以避免這些情況
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,查看ssl模塊默認是否已編譯
[root@centos8 ~]# /usr/local/soft/nginx-1.18.0/sbin/nginx -V nginx version: lws/1.18.0 built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC) built with OpenSSL 1.1.1c FIPS 28 May 2019 TLS SNI support enabled configure arguments: --prefix=/usr/local/soft/nginx-1.18.0 --with-http_stub_status_module --with-http_ssl_module
編譯參數中已包含了http_ssl_module這個模塊
三,https證書的獲取:
1,購買:
可以從國內的證書代理機構購買,
國外的證書大廠包括:
GlobalSign
geotrust
DigiCert等等
2,免費證書:
可以從letsencrypt獲取免費的證書,配置起來稍微麻煩一點,
優點是免費
官方網站:
https://letsencrypt.org/
四,nginx配置使用ssl證書
1,配置啟用ssl
#ssl on:啟用ssl
#ssl_certificate https證書文件
#ssl_certificate_key 證書申請者的私鑰文件
ssl on; ssl_certificate /data/certs/ssl2019/ssl.crt; ssl_certificate_key /data/certs/ssl2019/ssl.key;
注意:證書文件的安全非常重要,
不要放到網站虛擬主機的root目錄下,
避免被暴露到公網上
2,ssl的優化:
#ssl_session_cache:配置共享會話緩存大小
#ssl_session_timeout:配置會話超時時間
配置例子:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl的session的作用:
每次新的TLS連續都需要握手(因為創建共享的加密密鑰),在TCP三次握手之上還需要多兩個來回,
重用一個Session,可以減少一個來回,減少cpu的計算量
ssl_session_cache的默認值是none
它的取值包括:
1,off:不使用session緩存: nginx告訴客戶端session可能不會被重用 2,none:不使用session緩存:nginx告訴客戶端session可能會被重用, 但並不會把session存儲在緩存中 3,builtin:緩存只供一個工作進程使用 4,shared: 所有工作進程之間共享緩存
說明:ssl 的session cache大小:1M字節可以存儲大約4000個session,
可以根據自己網站的並發情況計算一個合適的數字
說明:建議把session的配置放到http段而不是server段,共享可以提升性能
五,強制瀏覽器跳轉https協議訪問
當用戶訪問到http網站時,直接rewrite到https站即可
server { listen 80; server_name dev.lhdtest.com; rewrite ^(.*) https://$server_name$1 permanent; }
六,查看nginx版本
[root@centos8 ~]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v nginx version: nginx/1.18.0