教學課程:使用 Amazon Linux AMI 設定 SSL/TLS - Amazon Elastic Compute Cloud

教學課程:使用 Amazon Linux AMI 設定 SSL/TLS

Secure Sockets Layer/Transport Layer Security (SSL/TLS) 會在 Web 伺服器與 Web 用戶端之間建立加密通路,保護傳輸中的資料以防遭到竊聽。本教學說明如何在具有 Amazon Linux AMI 和 Apache Web 伺服器的 EC2 執行個體上手動新增 SSL/TLS 支援。本教學假設您未使用負載平衡器。如果您正在使用 Elastic Load Balancing,您可以選擇使用來自 AWS Certificate Manager 的憑證設定負載平衡器上的 SSL 卸載。

基於歷史因素,Web 加密通常僅簡單以 SSL 指稱。雖然 Web 瀏覽器仍然支援 SSL,但其後來的通訊協定 TLS 較不易受攻擊。根據預設,Amazon Linux AMI 禁止伺服器端支援所有版本的 SSL。安全標準機構認為 TLS 1.0 不安全,IETF 已著手準備正式廢除 TLS 1.0 與 TLS 1.1。本教學課程包含完全基於啟用 TLS 1.2 的指導 (較新的 TLS 1.3 通訊協定還在起草階段,在 Amazon Linux 中無法支援)。如需更新之加密標準的詳細資訊,請參閱 RFC 7568RFC 8446

本教學課程簡單地以 TLS 指稱現代 Web 加密。

重要

這些程序專用於 Amazon Linux AMI。如果您嘗試在具有不同版本的執行個體上設定 LAMP Web 伺服器,則本教學中的一些程序可能不適用。若為 Amazon Linux 2,請參閱教學課程:在 Amazon Linux 2 上設定 SSL/TLS。若為 Ubuntu,請參閱以下 Ubuntu 社群文件:ApacheMySQLPHP。對於 Red Hat Enterprise Linux,請參閱以下:設定 Apache HTTP Web 伺服器。若是其他發行版,請參閱其特定文件。

Prerequisites

開始本教學之前,請先完成下列步驟:

  • 使用 Amazon Linux AMI 啟動 EBS 後端執行個體。如需詳細資訊,請參閱 步驟 1:啟動執行個體

  • 設定安全群組允許執行個體接受下列 TCP 連接埠上的連線:

    • SSH (連接埠 22)

    • HTTP (連接埠 80)

    • HTTPS (連接埠 443)

    如需詳細資訊,請參閱 授權 Linux 執行個體的傳入流量

  • 安裝 Apache Web 伺服器。如需逐步說明,請參閱教學課程:在 Amazon Linux 上安裝 LAMP Web 伺服器。只需要 http24 套件和其相依性,您可以忽略涉及 PHP 和 MySQL 的說明。

  • 若要識別和驗證 web 站點,TLS 公有金鑰基礎設施 (PKI) 依賴網域名稱系統 (DNS)。若要使用 EC2 執行個體來託管公有網站,您需要註冊 Web 伺服器的網域名稱,或將現有網域名稱傳輸至 Amazon EC2 主機。現有多個第三方網域註冊和 DNS 託管服務可用,或者您可以使用 Amazon Route 53

步驟 1:在伺服器上啟用 TLS

本程序將引導您使用自簽數位憑證在 Amazon Linux 上設定 TLS。

注意

自簽憑證可用於測試環境,而非生產環境。如果您在網際網路公開自簽憑證,來您網站光顧的訪客會收到安全警告。

在伺服器上啟用 TLS

  1. 連線至執行個體,並確認 Apache 正在執行。

    [ec2-user ~]$ sudo service httpd status

    必要的話,啟動 Apache。

    [ec2-user ~]$ sudo service httpd start
  2. 為確保所有軟體套件皆為最新版本,請對您的執行個體執行快速軟體更新。本程序可能需費時幾分鐘,但確定您擁有最新的安全更新和錯誤修正至關重要。

    注意

    -y 選項不要求確認就會安裝更新。如果您要先檢查更新再安裝,則可以省略此選項。

    [ec2-user ~]$ sudo yum update -y
  3. 現在您的執行個體為最新,請安裝 Apache 模組 mod_ssl 來新增 TLS 支援:

    [ec2-user ~]$ sudo yum install -y mod24_ssl

    您的執行個體現在有下列檔案,供您用來設定安全伺服器和建立用於測試的憑證:

    /etc/httpd/conf.d/ssl.conf

    mod_ssl 的組態檔案。檔案中包含的「指示詞」會告知 Apache 可在何處找到加密金鑰和憑證、要允許的 TLS 通訊協定版本,以及要接受的加密密碼。

    /etc/pki/tls/private/localhost.key

    供 Amazon EC2 主機使用的自動產生之 2048 位元 RSA 私有金鑰。在安裝期間,OpenSSL 會使用此金鑰來產生自簽主機憑證,而您也可以使用此金鑰來產生要提交給憑證授權機構 (CA) 的憑證簽署請求 (CSR)。

    /etc/pki/tls/certs/localhost.crt

    供伺服器主機使用的自動產生之自簽 X.509 憑證。對於測試 Apache 是否已妥善設定以使用 TLS,本憑證可派上用場。

    .key.crt 檔案皆為 PEM 格式,包含以 "BEGIN" 和 "END" 行架構而成的 Base64 編碼 ASCII 字元,如下方的憑證縮寫範例所示:

    -----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----

    檔案名稱和副檔名僅為使用上的方便,不會影響功能;只要 cert.crt 檔案中的相關指示詞使用相同的名稱,您就可以呼叫憑證 cert.pemssl.conf 或其他檔案名稱。

    注意

    當您將預設 TLS 檔案取代為自己的自訂檔案時,請確認自訂檔案為 PEM 格式。

  4. 重新啟動 Apache。

    [ec2-user ~]$ sudo service httpd restart
  5. Apache Web 伺服器現在應該支援透過連接埠 443 的 HTTPS (安全 HTTP)。測試方式是將 EC2 執行個體的 IP 地址或完整網域名稱加上字首 https:// 後一起輸入瀏覽器 URL 列。因為您要使用自簽的不受信任主機憑證連線至網站,所以瀏覽器可能會顯示一系列的安全警告。

    請覆寫警告,並繼續前往網站。如果預設 Apache 測試頁面開啟,即表示您已於伺服器順利設定 TLS。現在所有在瀏覽器與伺服器之間傳遞的資料皆會安全加密。

    為了避免網站訪客碰到警告畫面,您需要取得憑證,其不僅會加密也可將您公開驗證為網站擁有者。

步驟 2:取得 CA 簽署的憑證

您可以使用下列程序取得 CA 簽署的憑證:

  • 從私有金鑰產生憑證簽署請求 (CSR)

  • 將 CSR 提交至憑證授權機構 (CA)

  • 取得簽署的主機憑證

  • 設定 Apache 來使用憑證

在密碼編譯方面,自簽的 TLS X.509 主機憑證與 CA 簽署的憑證完全相同。兩者的差異在於往來的形式,無關數學性質;CA 允諾會至少先驗證網域的所有權,再將憑證發給申請人。每個 Web 瀏覽器皆含有受瀏覽器廠商信任能執行這項操作的 CA 名單。X.509 憑證主要包含對應至私有伺服器金鑰的公有金鑰,以及以密碼編譯方式繫結至公有金鑰的 CA 簽章。瀏覽器透過 HTTPS 連接至 Web 伺服器時,伺服器會呈現憑證給瀏覽器,讓瀏覽器檢查其信任的 CA 名單。如果簽署者位於名單上,或可透過包含其他受信任簽署者的「信任鏈」存取,瀏覽器會與伺服器協議一快速加密資料通路,並載入頁面。

憑證通常因包含驗證請求的勞力而需耗費成本,因此請貨比三家。一些 CA 免費提供基本層級憑證。這些 CA 當中最值得注意的是 Let's Encrypt 專案,此專案也支援自動化憑證建立和續約程序。如需使用 Let's Encrypt 做為 CA 的詳細資訊,請參閱憑證自動化:在 Amazon Linux 2 上使用 Certbot 加密

如果您打算提供商業級服務,AWS Certificate Manager 會是不錯的選擇。

主機憑證的基礎就是金鑰。自 2017 起,政府產業團體建議採用最小金鑰 (模數) 大小為 2048 位元的 RSA 金鑰,用以保護文件至 2030 年。Amazon Linux 中 OpenSSL 所產生的預設模數大小為 2048 位元,這表示現有的自動產生金鑰適用於 CA 簽署的憑證。下面說明的替代程序適合需要自訂金鑰的人員,例如具有較大模數或使用不同加密演算法的金鑰。

除非您擁有已註冊和託管的 DNS 網域,否則有關取得 CA 簽署的主機憑證的這些指示將不適用。

取得 CA 簽署的憑證

  1. 連線至執行個體,並導覽至 /etc/pki/tls/private/。這是存放 TLS 之伺服器私有金鑰的目錄。如果您偏好使用現有主機金鑰來產生 CSR,請跳到步驟 3。

  2. (選用) 產生新私有金鑰。以下是金鑰組態的一些範例。任何產生的金鑰皆可用於您的 Web 伺服器,但金鑰實作安全的方式 (和多少) 會不同。

    • 範例 1:建立預設 RSA 主機金鑰。產生的檔案 custom.key 是 2048 位元 RSA 私有金鑰。

      [ec2-user ~]$ sudo openssl genrsa -out custom.key
    • 範例 2:建立具有較大模數的較嚴格 RSA 金鑰。產生的檔案 custom.key 是 4096 位元 RSA 私有金鑰。

      [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
    • 範例 3:建立具有密碼保護的 4096 位元加密 RSA 金鑰。產生的檔案 custom.key 是以 AES-128 密碼加密的 4096 位元 RSA 私有金鑰。

      重要

      加密金鑰可提供更好的安全,但因為加密的金鑰需要密碼,所以無法自動啟動與其相依的服務。每次使用此金鑰時,您都必須透過 SSH 連線提供密碼 (在前述範例中為 "abcde12345")。

      [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
    • 範例 4:使用非 RSA 密碼來加密金鑰。RSA 密碼編譯因為其公有金鑰的大小 (取決於兩個大質數的乘積),可能相當慢。不過,為 TLS 建立使用非 RSA 密碼的金鑰是有可能的。傳送對等安全層級時,以橢圓曲線數學原理為基礎的金鑰會較小,且運算速度較快。

      [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey

      結果是使用 prime256v1 (OpenSSL 支援的一種「具名曲線」) 的 256 位元橢圓曲線私有金鑰。根據 NIST,其密碼編譯強度略大於 2048 位元 RSA 金鑰。

      注意

      有別於 RSA 金鑰,並非所有 CA 都能為橢圓曲線型金鑰提供相同層級的支援。

    請確定新的私有金鑰具有高限制的所有權和許可 (擁有者=root、群組=root、僅限擁有者的讀寫權)。這些命令會如下所示:

    [ec2-user ~]$ sudo chown root.root custom.key [ec2-user ~]$ sudo chmod 600 custom.key [ec2-user ~]$ ls -al custom.key

    上面的命令應該會產生下列結果:

    -rw------- root root custom.key

    在您建立和設定滿意的金鑰之後,即可建立 CSR。

  3. 使用偏好的金鑰建立 CSR;以下範例使用 custom.key

    [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem

    OpenSSL 會開啟對話方塊,並提示您輸入下表中顯示的資訊。對於基本的已驗證網域之主機憑證,Common Name (通用名稱) 以外的所有欄位皆為選用欄位。

    名稱 描述 範例
    Country Name (國家/地區名稱) 兩個字母的 ISO 縮寫,用來代表您的國家/地區。 US (=美國)
    State or Province Name (州或省名稱) 您組織位在的州名或省名。此名稱不得使用縮寫。 華盛頓州
    Locality Name (地區名稱) 您組織的位置 (例如城市)。 西雅圖
    Organization Name (組織名稱) 您組織的完整法定名稱。請不要使用您組織名稱的縮寫。 範例公司
    Organizational Unit Name (組織單位名稱) 額外組織資訊 (如果有的話)。 範例部門
    Common Name (通用名稱)

    此值必須完全符合您預期使用者會在瀏覽器輸入的 web 地址。這通常表示字首為主機名稱或別名的網域名稱,格式為 www.example.com。在使用自簽憑證且沒有 DNS 解析的測試中,通用名稱可能只包含主機名稱。CA 也提供費用較高的憑證,其可接受萬用字元名稱 (例如 *.example.com)。

    www.example.com
    電子郵件地址 伺服器管理員的電子郵件地址。 someone@example.com

    最後,OpenSSL 會提示您輸入選用的挑戰密碼。此密碼只會套用至 CSR 以及您與 CA 之間的交易,因此請遵循 CA 對於這個和另一個選用欄位 (選用公司名稱) 的建議。CSR 挑戰密碼不會影響伺服器操作。

    產生的檔案 csr.pem 會包含您的公有金鑰、您公有金鑰的數位簽章,以及您輸入的中繼資料。

  4. 將 CSR 提交給 CA。這通常包含在文字編輯器開啟 CSR 檔案,以及將內容複製至 Web 表單。此時,系統可能會要求您提供要放在憑證上的一或多個主體別名 (SAN)。如果 www.example.com 是通用名稱,則 example.com 會是不錯的 SAN,反之亦然。輸入其中任一名稱的網站訪客會看到無錯誤連線。如果您的 CA Web 表單允許這項操作,請在 SAN 清單中包含通用名稱。部分 CA 會自動予以包含。

    在核准您的請求之後,您會收到 CA 所簽署的新主機憑證。系統也可能會指示您下載「中繼憑證」檔案,其中包含完成 CA 信任鏈所需的其他憑證。

    注意

    您的 CA 可能會傳送多種格式的檔案給您,以供不同用途所需。在本教學中,您只應該使用 PEM 格式的憑證檔案,而憑證檔案通常 (但不一定) 會標上 .pem.crt 副檔名。如果您不確定要使用的檔案,請使用文字編輯器開啟檔案,並尋找包含一或多個以下列項目開頭之區塊的檔案:

    - - - - -BEGIN CERTIFICATE - - - - -

    此檔案的結尾也應該如下:

    - - - -END CERTIFICATE - - - - -

    您也可以在命令列測試檔案,如下所示:

    [ec2-user certs]$ openssl x509 -in certificate.crt -text

    驗證檔案中出現這幾行。請不要使用結尾為 .p7b.p7c 或類似副檔名的檔案。

  5. 將新的 CA 簽署憑證和任何中繼憑證放在 /etc/pki/tls/certs 目錄中。

    注意

    有數種方式可以將自訂金鑰上傳至 EC2 執行個體,但最直接且有益的方式是在本機電腦和執行個體上開啟文字編輯器 (例如,vi、nano 或記事本),然後在其間複製和貼上檔案內容。對 EC2 執行個體執行這些操作時,您需要有 root [sudo] 許可。因此,您可以立即看到是否有任何許可或路徑問題。不過,請注意不要在複製內容時新增其他行,或以任何方式變更它們。

    /etc/pki/tls/certs 目錄內,使用下列命令來驗證檔案所有權、群組和許可設定符合高限制的 Amazon Linux 預設值 (擁有者=root、群組=root、僅限擁有者的讀寫權)。

    [ec2-user certs]$ sudo chown root.root custom.crt [ec2-user certs]$ sudo chmod 600 custom.crt [ec2-user certs]$ ls -al custom.crt

    上面的命令應該會產生下列結果:

    -rw------- root root custom.crt

    中繼憑證檔案的許可較不嚴格 (擁有者=root、群組=root、擁有者可以寫入、群組可以讀取、世界可以讀取)。這些命令如下:

    [ec2-user certs]$ sudo chown root.root intermediate.crt [ec2-user certs]$ sudo chmod 644 intermediate.crt [ec2-user certs]$ ls -al intermediate.crt

    上面的命令應該會產生下列結果:

    -rw-r--r-- root root intermediate.crt
  6. 如果您使用自訂金鑰建立 CSR 和產生的主機憑證,請移除或重新命名 /etc/pki/tls/private/ 目錄中的舊金鑰,然後在該處安裝新的金鑰。

    注意

    有數種方式可以將自訂金鑰上傳至 EC2 執行個體,但最直接且有益的方式是在本機電腦和執行個體上開啟文字編輯器 (vi、nano、notepad 等等),然後在其間複製和貼上檔案內容。對 EC2 執行個體執行這些操作時,您需要有 root [sudo] 權限。因此,您可以立即看到是否有任何許可或路徑問題。不過,請注意不要在複製內容時新增其他行,或以任何方式變更它們。

    /etc/pki/tls/private 目錄內,確認檔案所有權、群組和許可設定符合高限制的 Amazon Linux 預設值 (擁有者=root、群組=root、僅限擁有者的讀寫權)。這些命令會如下所示:

    [ec2-user private]$ sudo chown root.root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ ls -al custom.key

    上面的命令應該會產生下列結果:

    -rw------- root root custom.key
  7. 編輯 /etc/httpd/conf.d/ssl.conf 以反映新的憑證和金鑰檔案。

    1. 在 Apache 的 SSLCertificateFile 指示詞中,提供 CA 簽署主機憑證的路徑和檔案名稱:

      SSLCertificateFile /etc/pki/tls/certs/custom.crt
    2. 如果您收到中繼憑證檔案 (在此範例中為 intermediate.crt),請使用 Apache 的 SSLCACertificateFile 指示詞提供其路徑和檔案名稱:

      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      注意

      部分 CA 會將主機憑證和中繼憑證結合至單一檔案,讓此指示詞變得不必要。請參閱 CA 所提供的說明。

    3. 在 Apache 的 SSLCertificateKeyFile 指示詞中,提供私有金鑰的路徑和檔案名稱:

      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
  8. 儲存 /etc/httpd/conf.d/ssl.conf,並重新啟動 Apache。

    [ec2-user ~]$ sudo service httpd restart
  9. 在瀏覽器 URL 列輸入網域名稱 (字首為 https://),以測試伺服器。瀏覽器應該會透過 HTTPS 載入測試頁面,而不會產生錯誤。

步驟 3:測試和強化安全組態

在您的 TLS 運作並向大眾公開之後,您應測試其實際安全程度。這項操作能夠利用線上服務輕鬆完成,例如 Qualys SSL Labs 可免費為您的安全設定執行透徹的分析。根據結果,您可以決定透過控制所接受的通訊協定、偏好的密碼,以及排除的項目,來強化預設安全組態。如需詳細資訊,請參閱 how Qualys formulates its scores

重要

實際測試對於伺服器安全而言十分重要。微小的組態錯誤可能會導致嚴重安全漏洞和資料遺失。由於建議的安全實務為因應研究與浮現的威脅而持續地變動,所以定期安全稽核是良好伺服器管理的必要項目。

Qualys SSL Labs 網站上,輸入伺服器的完整網域名稱,格式為 www.example.com。約兩分鐘之後,您會收到網站的評等 (從 A 到 F),以及發現之項目的詳細分析。雖然概觀顯示組態大致上很正確,但詳細報告指出幾個潛在問題。例如:

支援某些較舊的瀏覽器使用 RC4 加密。加密是加密演算法的數學核心。用來加密 TLS 資料串流的快速加密 RC4 已知有數個嚴重缺點。除非您有絕佳理由來支援舊版瀏覽器,否則應該停用此功能。

支援舊版 TLS。此組態支援 TLS 1.0 (已廢除) 和 TLS 1.1 (即將廢除)。自 2018 年起,只建議使用 TLS 1.2。

更正 TLS 組態

  1. 在文字編輯器中開啟組態檔案 /etc/httpd/conf.d/ssl.conf,在以下每一行的開頭輸入 "#",以變更為註解:

    #SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3
  2. 新增下列指示詞:

    SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSLProxyProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2

    這些指示詞明確停用 SSL 版本 2 和 3,以及 TLS 版本 1.0 和 1.1。對於完全只使用 TLS 1.2 的用戶端,伺服器現在拒絕接受其加密連線。對於人類讀者而言,指示詞中的詳細措詞能更清楚地溝通伺服器的設定目的。

    注意

    以此種方式停用 TLS 1.0 和 1.1 版,可封鎖小部分的過期 Web 瀏覽器存取您的網站。

修改允許的加密清單

  1. 開啟組態檔案 /etc/httpd/conf.d/ssl.conf,找到用於設定 SSLCipherSuiteSSLProxyCipherSuite 之註解範例的區段。

    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 #SSLProxyCipherSuite HIGH:MEDIUM:!aNULL:!MD5

    請將這些保留原狀,並在其下方新增下列指示詞:

    注意

    雖然基於可讀性而在此顯示數行,但這兩個指示詞都必須位在密碼名稱之間沒有空格的單行。

    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLProxyCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

    這些密碼是 OpenSSL 中較長支援密碼清單的一小部分。它們是根據下列條件選取和指定。

    • 後續保密支援

    • 強度

    • 速度

    • 密碼系列前的特定密碼

    • 拒絕之密碼前的允許密碼

    高排名密碼名稱包含 ECDHE,代表 Elliptic Curve Diffie-Hellman Ephemeral,而 ephemeral 表示前向保密。另外,RC4 現在位於接近結尾的禁止密碼。

    建議您使用明確密碼清單,而不是依賴預設值或是內容不可見的簡潔指示詞。這裡所顯示的密碼清單只是多個可能清單中的其中一個;例如,您可能會想要最佳化清單的速度,而不是後續保密。

    如果您預期需要支援較舊的用戶端,可以允許整套 DES-CBC3-SHA 密碼。

    每次更新 OpenSSL 都會產生新密碼,並取代舊密碼。將 EC2 Amazon Linux 執行個體保持為最新狀態,並留意來自 OpenSSL 的安全公告,並注意技術新聞中新安全漏洞的報告。

  2. 移除下行中的 "#",以取消註解:

    #SSLHonorCipherOrder on

    此命令會強制伺服器偏好高排名密碼,包含 (如此情形) 支援後續保密的密碼。開啟此指示詞時,伺服器會先嘗試建立嚴密的安全連線,再備援至具有較低安全的允許密碼。

  3. 重新啟動 Apache。如果您在 Qualys SSL Labs 上重新測試網域,應該會看到 RC4 漏洞消失。

Troubleshoot

  • 除非我輸入密碼,否則我的 Apache Web 伺服器不會啟動

    如果您已安裝一個加密、密碼受保護的私有伺服器金鑰,這會是預期行為。

    您可以移除金鑰的加密和密碼需求。假設您在預設目錄中有稱為 custom.key 的私有加密 RSA 金鑰,且其上的密碼為 abcde12345,請於 EC2 執行個體上執行下列命令,以產生此金鑰的未加密版本。

    [ec2-user ~]$ cd /etc/pki/tls/private/ [ec2-user private]$ sudo cp custom.key custom.key.bak [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt [ec2-user private]$ sudo mv custom.key.nocrypt custom.key [ec2-user private]$ sudo chown root.root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ sudo service httpd restart

    Apache 現在應該會啟動,而且系統不會提示您輸入密碼。