承認吧,你的 HTTPS 其實不太安全
網站並不是用了 HTTPS 就一定安全,隨著電腦運算速度與 Hack 技術的進步,很多早期的 SSL 加密模式已經開始浮現漏洞,讓 Hacker 可以在比較合理的時間解密 HTTPS 封包,像是 SSL v2/v3 等等比較老舊的加密模式,因此建議直接由 Web Server 關閉禁止使用這些脆弱的加密方式。至少要使用 TLS 1.0 以上的加密協定,TLS 1.2 更好但是會犧牲 IE 6 這個老舊瀏覽器的支援性。
透過 sslscan 掃描 SSL 加密方式
想要測試某個網站啟用哪些 SSL 協定,可以透過 sslscan 這個工具 (GitHub) 達成,編譯與操作如下:
先安裝編譯環境需要的套件
sudo apt-get install build-essential git zlib1g-dev
sudo apt-get build-dep openssl
從 GitHub 下載 Source Cose 編譯安裝
git clone https://github.com/rbsec/sslscan
cd sslscan
make static
執行 sslscan 測試網站
./sslscan blog.toright.com:443
執行後會回應以下報告,可以看出這個網站的 HTTPS 提供了哪些加密協定?
網路上還有一個線上檢測的服務 Qualys SSL Labs 可以直接告訴你哪些協定是不安全的,而且更新速度很快,有興趣的可以連進去線上測試看看,能拿到 Grade A 算是當下很安全了。
筆記:HAProxy SSL 安全協定建議設定 (2020/04/15 Qualys SSL Labs Grade A?)
global tune.ssl.default-dh-param 2048 ssl-default-bind-options no-tlsv11 no-tlsv10 no-sslv3 no-tls-tickets ssl-default-bind-ciphers ECDHE+aRSA+AES256+GCM+SHA384:ECDHE+aRSA+AES128+GCM+SHA256:ECDHE+aRSA+AES256+SHA384:ECDHE+aRSA+AES128+SHA256:AES256+GCM+SHA384:AES128+GCM+SHA256:AES128+SHA256:AES256+SHA256:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
HAProxy 設定方法如上,需要的人可以參考看看,可以拿到 Grade A。
2020/04/15 Update: 移除 TLS v1/v1.1, SHA
筆記:Apache SSL 安全協定建議設定 (2017/07/26 Qualys SSL Labs Grade A)
# SSL Options SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite EECDH+AES:AES256-SHA:AES128-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH:!EXP:!SRP:!DSS:!LOW; SSLVerifyClient none SSLVerifyDepth 1 SSLOptions +StrictRequire # Guarantee HTTPS for 180 days including sub domains Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
被電爆後補上這個 Blog 的 Apache SSL 設定,Qualys SSL Labs 拿到 Grade A,最高只能 87 分不能再高了.......