配置SSL證書各種踩坑,跟着官方說明文檔走,很多坑沒寫出來,最終踩了很多坑,查了很多論壇,最終配置成功https。
歡迎訪問我的個人站點(有狗糧)~
https://www.orangexp.top
(以下是配置SSL的官方教程,坑有點多。。)
阿里雲SSL證書服務支持下載證書安裝到Apache服務器,從而使Apache服務器支持HTTPS安全訪問。本文介紹了證書安裝的具體操作。
前提條件
- 您的Apache服務器上已經開啟了443端口(HTTPS服務的默認端口)。
- 您的Apache服務器上已安裝了mode_ssl.so模塊(啟用SSL功能)。
- 本文檔證書名稱以domain name為示例,例如:證書文件名稱為domain name_public.crt,證書鏈文件名稱為domain name_chain.crt,證書密鑰文件名稱為domain name.key。
- 申請證書時如果未選擇系統自動創建CSR,證書下載壓縮包中將不包含.key文件。
說明
.crt擴展名的證書文件采用Base64-encoded的PEM格式文本文件,可根據需要修改成.pem等擴展名。 證書格式詳細內容,請參見主流數字證書都有哪些格式?
操作步驟
- 解壓已下載保存到本地的Apache證書文件。
解壓后的文件夾中有3個文件:
- 證書文件:以.crt為后綴或文件類型。
- 證書鏈文件:以.crt為后綴或文件類型。
- 密鑰文件:以.key為后綴或文件類型。
- 在Apache安裝目錄中新建cert目錄,並將解壓的Apache證書、證書鏈文件和密鑰文件拷貝到cert目錄中。如果需要安裝多個證書,需在Apache目錄中新建對應數量的cert目錄,用於存放不同的證書 。
說明 如果申請證書時選擇了
手動創建CSR文件,請將手動生成創建的密鑰文件拷貝到cert目錄中並命名為domain name.key。
- 修改httpd.conf配置文件。
- 在Apache安裝目錄下,打開Apache/conf/httpd.conf文件,並找到以下參數,按照下文中注釋內容進行配置。
說明 如果您在
httpd.conf文件中沒有找到以上配置語句,請確認您的Apache服務器中是否已經安裝mod_ssl.so模塊。可執行yum install -y mod_ssl
命令安裝mode_ssl模塊。
- 保存httpd.conf文件並退出。
- 修改httpd-ssl.conf配置文件。
- 打開Apache/conf/extra/httpd-ssl.conf文件並找到以下參數,按照下文中注釋內容進行配置。
說明 根據操作系統的不同,
http-ssl.conf文件也可能存放在conf.d/ssl.conf目錄中。
<VirtualHost *:443> ServerName #修改為申請證書時綁定的域名www.YourDomainName1.com。 DocumentRoot /data/www/hbappserver/public SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支持協議,去掉不安全的協議。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile cert/domain name1_public.crt # 將domain name1_public.crt替換成您證書文件名。 SSLCertificateKeyFile cert/domain name1.key # 將domain name1.key替換成您證書的密鑰文件名。 SSLCertificateChainFile cert/domain name1_chain.crt # 將domain name1_chain.crt替換成您證書的密鑰文件名;證書鏈開頭如果有#字符,請刪除。 </VirtualHost> #如果證書包含多個域名,復制以上參數,並將ServerName替換成第二個域名。 <VirtualHost *:443> ServerName #修改為申請證書時綁定的第二個域名www.YourDomainName2.com。 DocumentRoot /data/www/hbappserver/public SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支持協議,去掉不安全的協議。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile cert/domain name2_public.crt # 將domain name2替換成您申請證書時的第二個域名。 SSLCertificateKeyFile cert/domain name2.key # 將domain name2替換成您申請證書時的第二個域名。 SSLCertificateChainFile cert/domain name2_chain.crt # 將domain name2替換成您申請證書時的第二個域名;證書鏈開頭如果有#字符,請刪除。 </VirtualHost>
說明 需注意您的瀏覽器版本是否支持SNI功能。如果不支持,多域名證書配置將無法生效。
- 保存httpd-ssl.conf文件並退出。
- 重啟Apache服務器使SSL配置生效。
在Apache的bin目錄下執行以下命令:
- 停止Apache服務。
- 開啟Apache服務。
- 可選:修改httpd.conf文件,設置HTTP請求自動跳轉HTTPS。
在httpd.conf文件中的<VirtualHost *:80> </VirtualHost>
中間,添加以下重定向代碼。
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
(筆者沒有選擇使用這個請求,故http和https皆可)
后續操作
證書安裝完成后,您可通過登錄證書的綁定域名驗證該證書是否安裝成功。
https://domain name #domain name替換成證書綁定的域名。
如果網頁地址欄出現小鎖標志,表示證書安裝成功。
DV SSL、OV SSL數字證書部署在服務器上后,您的瀏覽器訪問網站時,展示以下效果:
證書安裝完成后,如果網站無法通過https正常訪問,需確認您安裝證書的服務器443端口是否已開啟或被其他工具攔截。如果您使用的是阿里雲ECS服務器,請前往ECS控制台安全組頁面配置放行443端口。
備注:有好幾處在conf/http-conf.conf的#要去除,還有一些配置要修改,根據系統提示一處一處改吧。。歡迎一起留言討論