Turn Your Website SSL Labs Test Grade to A+

Turn Your Website SSL Labs Test Grade to A+

注意: SSL Labs 在2020/1/31將所有允許TLS 1.0和TLS 1.1的網站分數一律調成B

所以我們可以先去設定檔把TLS 1.0和TLS 1.1拿掉

sudo vim /etc/nginx/nginx.conf
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_protocols TLSv1.2 TLSv1.3;

如果你有使用Let’s Encrypt SSL Certificate,記得要去設定檔把Cerbot的設定註解,不要直接更改他的設定檔,否則憑證可能就沒辦法自動更新。

sudo vim /etc/nginx/sites-available/default
#include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

到這一步你可以到SSL Labs測看看,應該能到A,把下列網址改成你的domain

https://www.ssllabs.com/ssltest/analyze.html?d=yourdomain.com

to A+

其實很簡單,就是啟用HSTS,雖然我們都會設定讓http request重新導向到https,但如果啟用了HSTS(HTTP Strict Transport Security)就可以避免這些重導向,當瀏覽器發現你的網站的HSTS header時,就不會嘗試去連HTTP(一段時間內,可設定),而是直接連HTTPS,HSTS還能避免downgrade attacks

現在開始吧!

在設定檔裡加上http2

sudo vim /etc/nginx/sites-available/default
...
    listen [::]:443 ssl http2 ipv6only=on; 
    listen 443 ssl http2; 
...

這樣有支援http2的瀏覽器nginx就會自動使用http2

加入這行:

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

檢查語法後重新載入設定

sudo nginx -t 
sudo systemctl reload nginx

你可以用這個方法來看http2 header有沒有順利加入

curl -I -L https://your_domain

看是否出現HTTP/2 200

HTTP/2 200
server: nginx/1.14.0 (Ubuntu)
date: Wed, 22 Apr 2020 20:57:26 GMT
content-type: text/html; charset=UTF-8

編輯設定檔

sudo vim /etc/nginx/nginx.conf

啟動Http2並設定效期(6個月)

http {
...
    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    add_header Strict-Transport-Security "max-age=15768000" always;
}
...

如果你有subdomains也要用HSTS,可以加上includeSubDomains

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

檢查語法後重新載入設定

sudo nginx -t
sudo systemctl reload nginx

這時候再到到SSL Labs測試看到,看分數是否能到A+!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *