網頁知識:增加網頁伺服器Apache HTTPS 安全等級

作者:webmaster 於 2018年02月21日 19:00:00
13825
次閱讀
當我使用ssllabs測試網頁伺服器的SSL時,得到B級,我注意到其中顯示下面訊息。
【This server supports weak Diffie-Hellman (DH) key exchange parameters.】
【This server does not support Forward Secrecy with the reference browsers. Grade capped to B.】顯然改善網頁伺服器的安全配置勢在必行。

增加網頁伺服器Apache HTTPS 安全等級

不管使用Apache還是nginx網站伺服務器軟體,首先都需要生成一個新的迪菲-赫爾曼密鑰交換參數檔。最新的瀏覽器(包括Google Chrome,Mozilla Firefox和Microsoft Internet Explorer)已將最低加密位元增加到1024-bit。我們建議您生成2048-bit。 產生新的迪菲-赫爾曼密鑰交換(Diffie-Hellman)檔最簡單方法是使用OpenSSL:

產生一個dhparams.pem檔

openssl dhparam -out dhparams.pem 2048

產生的dhparams.pem檔建議搬至網站主機中安全處放置,但是要Apache有權讀取的的地方,下面步驟會需要設定迪菲-赫爾曼密鑰交換參數檔路徑。

修改Apache設定檔

SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 //移除SSLv2跟SSLv3跟TLSv1跟TLSv1.1(因為我已經有TLSv1.2)
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on

在Apache(需要2.4.7以上版本)設定檔中增加新的迪菲-赫爾曼密鑰交換參數檔路徑

SSLOpenSSLConfCmd DHParameters /your-path/dhparams.pem

如果您的Apache是2.4.6版本,或是較舊的Apache,不支援SSLOpenSSLConfCmd命令

我是利用SSLCertificateFile文件中可以在文件後增加自訂義參數的特性,使用下面指令將dhparams.pem加入我的SSLCertificateFile (ssl.cert)。

cat dhparams.pem >> ssl.cert

最後重新啟用Apache