本文介紹如何在Apache伺服器配置單網域名稱或多網域名稱以及萬用字元網域名稱的SSL認證。成功配置SSL認證後,您將能通過HTTPS加密通道安全訪問Apache伺服器,確保資料轉送的安全性。
本文以CentOS作業系統、Apache 2.4.7為例介紹。不同版本的作業系統或Web伺服器,部署操作可能有所差異,如有問題,請聯絡商務經理進行諮詢。
前提條件
已通過數位憑證管理服務控制台簽發認證。具體操作,請參見購買SSL認證(額度)和提交認證申請。
SSL認證綁定的網域名稱已完成DNS解析,即您的網域名稱與主機IP地址相互映射。您可以通過控制台常用認證工具中的DNS生效驗證,檢測網域名稱DNS解析是否生效。具體操作,請參見DNS生效驗證。
已在Apache伺服器安裝
mod_ssl.so
模組(啟用SSL功能)。如未安裝,可執行
sudo yum install -y mod_ssl
命令安裝。安裝後,可執行httpd -M | grep 'ssl'
檢查mod_ssl.so
是否安裝成功。安裝成功效果如下圖:
步驟一:下載SSL認證
登入數位憑證管理服務控制台。
在左側導覽列,選擇。
在SSL證書管理頁面,定位到目標認證,在操作列,單擊更多,然後選擇下載頁簽。
如下圖所示,下載Apache伺服器對應的認證檔案。
解壓縮已下載的SSL認證壓縮包。
根據您在提交認證申請時選擇的CSR產生方式,解壓縮獲得的檔案不同,具體如下表所示。
CSR產生方式
認證壓縮包包含的檔案
系統產生
認證檔案(CRT格式):預設以認證綁定網域名稱_public命名。CRT格式的認證檔案採用Base64-encoded編碼的文字檔。
憑證鏈結檔案(CRT格式):預設以認證綁定網域名稱_chain命名。
私密金鑰檔案(KEY格式):預設以認證綁定網域名稱命名。
手動填寫
如果您填寫的是通過數位憑證管理服務控制台建立的CSR,下載後包含的認證檔案與系統產生的一致。
如果您填寫的不是通過數位憑證管理服務控制台建立的CSR,下載後只包括認證檔案(PEM格式),不包含認證密碼或私密金鑰檔案。您可以通過認證工具,將認證檔案和您持有的認證密碼或私密金鑰檔案轉換成所需格式。轉換認證格式的具體操作,請參見認證格式轉換。
步驟二:在Apache伺服器安裝認證
執行以下命令,在Apache伺服器的安裝目錄下建立一個用於存放認證檔案的目錄。
# cert目錄僅為樣本,認證存放目錄沒有命名限制。 sudo mkdir /etc/httpd/cert
說明/etc/httpd/
是使用yum方式安裝Apache伺服器時預設安裝目錄。如果您手動修改過該目錄或使用其他方式安裝的Apache伺服器,請根據實際配置調整。將認證檔案和私密金鑰檔案上傳至您建立的用於存放認證檔案的目錄下。
說明您可以使用遠程登入工具附帶的本地檔案上傳功能,上傳檔案。例如PuTTy、Xshell或WinSCP等。如果您使用的阿里雲Elastic Compute Service,上傳檔案具體操作,請參見上傳或下載檔案(Windows)或上傳檔案到Linux雲端服務器。
為確保Apache伺服器能夠正常啟用SSL模組,請按以下步驟修改對應的設定檔:
找到
/etc/httpd/conf.modules.d/00-ssl.conf
檔案,修改LoadModule ssl_module modules/mod_ssl.so
配置項,若前面有#
號,需移除以取消注釋,修改後儲存檔案。找到
/etc/httpd/conf/httpd.conf
檔案,修改Include conf.modules.d/*.conf
配置項,若前面有#
號,需移除以取消注釋,修改後儲存檔案。
需要注意的是,上述配置項所在檔案的具體位置可能會因系統版本或安裝方式而有所不同。為了找到這些配置的確切位置,您可以使用
grep
命令來在Linux系統上尋找包含特定文本的所有檔案。#尋找包含LoadModule ssl_module的所有檔案。 sudo grep -r "LoadModule ssl_module" /etc/httpd/
#尋找包含Include conf.modules.d的所有檔案。 sudo grep -r "Include conf.modules.d" /etc/httpd/
重要如果仍未找到以上參數,請確認您的Apache伺服器中是否已經安裝
mod_ssl.so
模組。如未安裝,可執行sudo yum install -y mod_ssl
命令安裝,安裝後,可執行httpd -M | grep 'ssl'
命令檢查mod_ssl.so
模組是否安裝成功。修改與認證相關的配置。
執行以下命令,開啟ssl.conf。
sudo vim /etc/httpd/conf.d/ssl.conf
重要ssl.conf檔案在不同作業系統的位置和名稱不一樣,在沒有ssl.conf檔案的情況下,請您查看Apache伺服器安裝目錄是否存在
conf/extra/http-ssl.conf
設定檔。在ssl.conf設定檔中,定位到以下參數,按照中文注釋修改。
安裝單網域名稱或多網域名稱認證設定檔
<VirtualHost *:443> ServerName example.com # 修改為申請認證時綁定的網域名稱。 SSLCertificateFile cert/domain_name_public.crt # 將domain_name_public.crt替換成您認證檔案名稱。 SSLCertificateKeyFile cert/domain_name.key # 將domain_name.key替換成您認證的密鑰檔案名稱。 SSLCertificateChainFile cert/domain_name_chain.crt # 將domain_name_chain.crt替換成您認證的憑證鏈結檔案名稱。 #自訂設定使用的TLS協議的類型以及加密套件(以下為配置樣本,請您自行評估是否需要配置) #TLS協議版本越高,HTTPS通訊的安全性越高,但是相較於低版本TLS協議,高版本TLS協議對瀏覽器的相容性較差。 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支援協議,去掉不安全的協議。 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 </VirtualHost> #如果認證包含多個網域名稱,複製VirtualHost參數,並將ServerName修改為第二個網域名稱。 <VirtualHost *:443> ServerName example2.com#修改為申請認證時綁定的第二個網域名稱。 SSLCertificateFile cert/domain_name2_public.crt # 將domain_name2替換成您申請認證時的第二個網域名稱。 SSLCertificateKeyFile cert/domain_name2.key # 將domain_name2替換成您申請認證時的第二個網域名稱。 SSLCertificateChainFile cert/domain_name2_chain.crt # 將domain_name2替換成您申請認證時的第二個網域名稱。 SSLEngine on SSLHonorCipherOrder on #自訂設定使用的TLS協議的類型以及加密套件(以下為配置樣本,請您自行評估是否需要配置) #TLS協議版本越高,HTTPS通訊的安全性越高,但是相較於低版本TLS協議,高版本TLS協議對瀏覽器的相容性較差。 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支援協議,去掉不安全的協議。 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 </VirtualHost>
安裝萬用字元網域名稱認證設定檔
<VirtualHost _default_:443> #自訂設定使用的TLS協議的類型以及加密套件(以下為配置樣本,請您自行評估是否需要修改) #TLS協議版本越高,HTTPS通訊的安全性越高,但是相較於低版本TLS協議,高版本TLS協議對瀏覽器的相容性較差 SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA #將domain_name_public.crt替換成您認證檔案名稱。 SSLCertificateFile /etc/httpd/cert/domain_name_public.crt #將domain_name.key替換成您認證的私密金鑰檔案名稱。 SSLCertificateKeyFile /etc/httpd/cert/domain_name.key #將domain_name_chain.crt替換成您認證的憑證鏈結檔案名稱。 SSLCertificateChainFile /etc/httpd/cert/domain_name_chain.crt </VirtualHost>
重要如果您要在Apache伺服器安裝多網域名稱SSL認證,請關注您的瀏覽器版本是否支援SNI功能。如果不支援,多網域名稱認證配置將無法生效。
可選:請根據您的業務需要,在
/etc/httpd/conf/httpd.conf
檔案中添加以下重新導向代碼,設定HTTP請求自動跳轉到HTTPS。RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
執行以下命令,重啟Apache伺服器,使修改後設定檔生效,確保SSL模組被正常啟用。
sudo systemctl restart httpd
步驟三:驗證SSL認證是否安裝成功
認證安裝完成後,您可通過訪問認證的綁定網域名稱驗證該認證是否安裝成功。
https://yourdomain #需要將yourdomain替換成認證綁定的網域名稱。
如果瀏覽器的地址欄出現表徵圖,表示認證已經安裝成功。
從Chrome 117版本開始,Chrome瀏覽器將地址欄HTTPS的改為了表徵圖。請單擊該表徵圖,參考如下樣本,出現標誌時,表示認證安裝成功。