Apache HTTPS啟用及安全性設定(Ubuntu)

邊做邊學,順便留個筆記,若有錯誤請不指教。

本篇使用 ubuntu18.04 及 apache2.4.29 版本實作。

本篇使用TWNIC現代化網路協定檢測工具測試:https://check.twnic.tw/

以下以TWNIC檢測工具項目逐條說明設定過程:

HTTPS狀態:

啟用ssl模組:

sudo a2enmod ssl

重啟apache服務:

sudo service apache2 restart

上傳憑證、中繼憑證及私鑰至伺服器

編輯 /etc/apache2/sites-available/default-ssl.conf 並於 <VirtualHost _default_:443> 標籤內加上(或修改)以下四行

SSLEngine on
SSLCertificateFile /yourpath/cert.pem
SSLCertificateKeyFile /yourpath/privkey.pem
SSLCertificateChainFile /yourpath/chain.pem

重啟apache服務:

sudo service apache2 restart

HTTPS重導向:

編輯 /etc/apache2/sites-enabled/000-default.conf 於 <VirtualHost *:80> 標籤內加上三行:

RewriteEngine on
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://kerker.website %{REQUEST_URI} [R=301,L]

重啟apache服務:

sudo service apache2 restart

HSTS:

啟動a2enmod headers並重起apache服務:

sudo a2enmod headers
sudo service apache2 restart

編輯 /etc/apache2/conf-available/security.conf 加上一行:

Header always set Strict-Transport-Security "max-age=31536000;includeSubdomains; preload"

重新載入設定

sudo service apache2 reload

TLS版本:

編輯 /etc/apache2/sites-enabled/default-ssl.conf 加上(或修改)一行:

SSLProtocol TLSv1.2 TLSv1.3

重啟apache服務:

sudo service apache2 restart

加密演算法:

編輯 /etc/apache2/sites-enabled/default-ssl.conf 加上(或修改)一行:

SSLCipherSuite AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH

重啟apache服務:

sudo service apache2 restart

SECURE RENEGOTIATION:

請將OpenSSL 更新至 0.9.8m 版本以上。

Certificate

本項檢查網站所使用之憑證是否符合規範,未符合規範者請自行更換符合規範之憑證。

  1. trust chain of certificate:網站使用可信CA,可使用免費SSL憑證,如非營利組織網路安全研究小組( ISRG) 營運的Let’s Encrypt 憑證。
  2. public key of certificate:金鑰長度2048位元。
  3. signature of certificate:使用SHA256以上雜湊演算法。
  4. domain name on certificate:使用的憑證網址與網站網址一致或使用Wildcard SSL 憑證,或使用Wildcard SSL 憑證。