我想在託管 Apache 伺服器的 Amazon Elastic Compute Cloud (Amazon EC2) Ubuntu 執行個體上安裝自我簽署 SSL/TLS 憑證。
解決方法
**先決條件:**請確定執行個體的安全群組允許連接埠 80 和 443 上的流量。
安裝 Apache 和 OpenSSL Web 伺服器
若要在您的伺服器上安裝 Apache 和 OpenSSL,請執行下列命令:
sudo apt-get install apache2 openssl -y
產生自我簽署憑證
請完成下列步驟:
-
SSL/TLS 同時使用公有金鑰和私有金鑰。若要為您的網域建立私有金鑰和憑證簽署請求 (CSR),請執行以下命令:
sudo openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/private/private.key -out /etc/ssl/private/request.csr
-
若要產生 SSL/TLS 憑證,請執行以下命令:
sudo openssl x509 -in /etc/ssl/private/request.csr -out /etc/ssl/private/certificate.crt -req -signkey /etc/ssl/private/private.key -days 365
現在您可以將金鑰 (private.key) 和憑證 (certificate.crt) 檔案與 Apache Web 伺服器一起使用。
設定 Apache 以使用 SSL/TLS
若要設定 Apache 以使用您建立的自我簽署憑證,請完成以下步驟:
-
執行以下命令開啟預設 Apache SSL 組態檔案:
sudo vi /etc/apache2/sites-available/default-ssl.conf
-
使用下列路徑定義 SSL 憑證的位置:
對於 SSLCertificateFile,請使用 /etc/ssl/private/certificate.crt。
對於 SSLCertificateKeyFile,請使用 /etc/ssl/private/private.key。
-
儲存並關閉檔案。然後,執行以下命令啟動虛擬主機檔案:
sudo a2ensite default-ssl.conf
-
若要開啟 Apache 的預設虛擬主機組態檔案,請執行以下命令:
sudo vi /etc/apache2/sites-available/000-default.conf
-
若要新增指向您網域的重新導向,請將以下行新增至 etc/apache2/sites-available/000-default.conf 檔案:
Redirect "/" https://Server-IP
**注意:**將 Server-IP 替換為您的伺服器 IP 位址。最佳實務是在 DocumentRoot 行之後輸入上述那一行設定。重新導向會將所有流量轉送到網站的 SSL/TLS 版本。
-
若要啟動 SSL/TLS 和標頭模組,請執行以下命令:
sudo a2enmod ssl
sudo a2enmod headers
-
執行以下命令以重新載入 Apache 服務,並套用修改:
sudo systemctl reload apache2
驗證您的 SSL/TLS 伺服器
請完成下列步驟:
- 啟動您的 Web 瀏覽器。
- 開啟 https://Server-IP。
**注意:**將 Server-IP 替換為您的伺服器 IP 位址。Web 瀏覽器會將您重新導向到警告頁面。這是可以預期的情況,因為您的憑證並非由受信任的憑證認證機構簽署。
- 選擇 Proceed to Host (繼續前往主機) 以開啟 Apache 首頁。瀏覽器網址列中會出現一個鎖頭圖示,表示不安全。這表示憑證未經驗證,但確實已加密您的連線。
如需如何在 Red Hat Enterprise Linux (RHEL) 或 Community Enterprise Linux 上設定 SSL/TLS 的資訊,請參閱 Red Hat 網站上的設定網頁伺服器以使用 HTTPS。或者,如果您使用 Amazon Linux,請參閱 Amazon Linux 1 (AL1) 、Amazon Linux 2 (AL2) 或 Amazon Linux 2023 (AL2023) 的 SSL/TLS 組態。