本文介紹如何在Apache服務器配置單域名或多域名SSL證書,具體包括下載和上傳證書文件,在Apache上配置證書文件、證書鏈和證書密鑰等參數,以及安裝證書后結果的驗證。成功配置SSL證書后,您將能夠通過HTTPS加密通道安全訪問Apache服務器,確保數據傳輸的安全性。
本文以CentOS操作系統、Apache 2.4.7為例介紹。不同版本的操作系統或Web服務器,部署操作可能有所差異,如有問題,請聯系產品技術專家進行咨詢,詳情請參見專家一對一服務。
前提條件
步驟一:下載SSL證書
登錄數字證書管理服務控制臺。
在左側導航欄,選擇。
在SSL證書管理頁面,定位到目標證書,在操作列,單擊下載。
在服務器類型為Apache的操作列,單擊下載。
解壓縮已下載的SSL證書壓縮包。
根據您在提交證書申請時選擇的CSR生成方式,解壓縮獲得的文件不同,具體如下表所示。
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,請根據實際配置調整。將證書文件和私鑰文件上傳至
/etc/httpd/cert
目錄。說明您可以使用遠程登錄工具附帶的本地文件上傳功能,上傳文件。例如PuTTy、Xshell或WinSCP等。如果您使用的阿里云云服務器 ECS,上傳文件具體操作,請參見上傳或下載文件(Windows)或上傳文件到Linux云服務器。
檢查
LoadModule ssl_module modules/mod_ssl.so
(用于加載mod_ssl.so模塊啟用SSL服務) 和Include conf.modules.d/*.conf
(用于加載SSL配置目錄)是否被注釋,如果被注釋,請刪除#注釋。由于操作系統以及Apache安裝方式不同,以上內容所處的位置也不同。可能出現在Apache安裝目錄的以下位置:
conf.modules.d/00-ssl.conf:本文中
LoadModule ssl_module modules/mod_ssl.so
位于該配置文件下(/etc/httpd/conf.modules.d/00-ssl.conf
)。httpd.conf:本文中
Include conf.modules.d/*.conf
位于該配置文件下(/etc/httpd/httpd.conf
)。http-ssl.conf
重要如果仍未找到以上參數,請確認您的Apache服務器中是否已經安裝mod_ssl.so模塊。如未安裝,可執行
yum install -y mod_ssl
命令安裝,安裝后,可執行httpd -M | grep 'ssl'
命令檢查mod_ssl.so是否安裝成功。2022年1月1日起CentOS官方將不再對CentOS 8提供服務支持,如果您的操作系統是CentOS 8,yum命令可能無法正常使用,具體解決辦法,請參見CentOS 8 EOL如何切換源?。
打開ssl.conf,修改與證書相關的配置。
執行以下命令,打開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>
重要請關注您的瀏覽器版本是否支持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替換成證書綁定的域名。
如果網頁地址欄出現小鎖標志,表示證書已經安裝成功。