MySSL HTTPS 評級 B 升 A+

背景

MySSL 提供了免費的網站 HTTPS 安全評級服務,而後我用個人網站 https://hellogithub.com,測試了一下。發現安全評級爲 B,最高爲 A+。下面是記錄個人網站從 B 升到 A+ 的操做和設置。html

tips: 個人網站免費 SSL/TLS 證書是這家的 Let's Encryptlinux

1、B 升 A

1.1 現狀

評分提示:服務器支持弱 DH 密鑰交換參數,降級爲 B nginx

1.2 緣由

前向安全性 Forward Secrecy 的概念很簡單:客戶端和服務器協商一個永不重用的密鑰,並在會話結束時銷燬它。服務器上的 RSA 私鑰用於客戶端和服務器之間的 Diffie-Hellman 密鑰交換籤名。從 Diffie-Hellman 握手中獲取的預主密鑰會用於以後的編碼。由於預主密鑰是特定於客戶端和服務器之間創建的某個鏈接,而且只用在一個限定的時間內,因此稱做短暫模式 Ephemeral。git

使用了前向安全性,若是一個攻擊者取得了一個服務器的私鑰,他是不能解碼以前的通信信息的。這個私鑰僅用於 Diffie Hellman 握手簽名,並不會泄露預主密鑰。Diffie Hellman 算法會確保預主密鑰毫不會離開客戶端和服務器,並且不能被中間人攻擊所攔截。github

全部版本的 nginx(如1.4.4)都依賴於 OpenSSL 給 Diffie-Hellman (DH)的輸入參數。不幸的是,這意味着 Diffie-Hellman Ephemeral(DHE)將使用 OpenSSL 的默認設置,包括一個用於密鑰交換的1024位密鑰。由於咱們正在使用2048位證書,DHE 客戶端就會使用一個要比非 DHE 客戶端更弱的密鑰交換。算法

MySSL 提示的由於:如今用的 DHE 參數小於 1024 位數。瀏覽器

1.3 解決辦法

  1. /etc/letsencrypt 目錄下查看是否有:ssl-dhparams.pem 文件
  2. 若是有則直接設置 nginx 配置:ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

若是沒有,則須要本身生成,生成後配置 nginx 注意路徑:安全

cd /etc/ssl/certs
openssl dhparam -out dhparam.pem 4096

tips:生成該參數十分消耗 CPU 資源,在線上服務執行必定要注意!服務器

1.4 結果

2、A 升 A+

2.1 現狀

評分提示:開啓HSTS後可以提高到A+,具體參考《XXXXX》 dom

2.2 緣由

HSTS(HTTP Strict Transport Security)是國際互聯網工程組織IETF發佈的一種互聯網安全策略機制。採用HSTS策略的網站將保證瀏覽器始終鏈接到該網站的HTTPS加密版本,不須要用戶手動在URL地址欄中輸入加密地址,以減小會話劫持風險。

MySSL 提示的由於:須要在開啓 HSTS,保證瀏覽器鏈接該網站始終爲 HTTPS 加密版本。

2.3 解決辦法

修改 nginx 配置:

server {
    server_name hellogithub.com www.hellogithub.com;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    .....
}

2.4 結果

參考

相關文章
相關標籤/搜索