前提是你先買好證書,下載下來,證書壓縮包打開共有3個文件
- 證書文件:以.crt為后綴或文件類型。
- 證書鏈文件:以.crt為后綴或文件類型。
- 密鑰文件:以.key為后綴或文件類型。
在Apache安裝目錄中新建cert目錄,並將解壓的Apache證書、 證書鏈文件和密鑰文件拷貝到cert目錄中。
如果需要安裝多個證書,需在Apache目錄中新建對應數量的cert目錄,用於存放不同的證書 。
如果申請證書時選擇了手動創建CSR文件,請將手動生成創建的密鑰文件拷貝到cert目錄中並命名為domain name.key。
在Apache安裝目錄下,打開Apache/conf/httpd.conf文件,並找到以下參數,按照下文中注釋內容進行配置
#LoadModule ssl_module modules/mod_ssl.so #刪除行首的配置語句注釋符號“#”加載mod_ssl.so模塊啟用SSL服務,Apache默認是不啟用該模塊的。如果找不到該配置,請重新編譯mod_ssl模塊。
#Include conf/extra/httpd-ssl.conf #刪除行首的配置語句注釋符號“#”。
存httpd.conf文件並退出
打開Apache/conf/extra/httpd-ssl.conf文件並找到以下參數,按照下文中注釋內容進行配置。
證書路徑建議使用絕對路徑。
根據操作系統的不同,http-ssl.conf文件也可能存放在conf.d/ssl.conf目錄中。
<VirtualHost *:443> ServerName #修改為申請證書時綁定的域名www.YourDomainName1.com。 DocumentRoot "D:/phpStudy/WWW/yg" SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支持協議,去掉不安全的協議。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile "D:/phpStudy/Apache/cert/2335105__yg1st.com_public.crt" # 將domain name1_public.crt替換成您證書文件名。 SSLCertificateKeyFile "D:/phpStudy/Apache/cert/2335105__yg1st.com.key" # 將domain name1.key替換成您證書的密鑰文件名。 SSLCertificateChainFile "D:/phpStudy/Apache/cert/2335105__yg1st.com_chain.crt" # 將domain name1_chain.crt替換成您證書的密鑰文件名;證書鏈開頭如果有#字符,請刪除。 </VirtualHost> #如果證書包含多個域名,復制以上參數,並將ServerName替換成第二個域名。 <VirtualHost *:443> ServerName #修改為申請證書時綁定的第二個域名www.YourDomainName2.com。 DocumentRoot "D:/phpStudy/WWW/yg" SSLEngine on SSLProtocol all -SSLv2 -SSLv3 # 添加SSL協議支持協議,去掉不安全的協議。 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 SSLHonorCipherOrder on SSLCertificateFile "D:/phpStudy/Apache/cert/2335105__yg1st.com_public.crt" # 將domain name2替換成您申請證書時的第二個域名。 SSLCertificateKeyFile "D:/phpStudy/Apache/cert/2335105__yg1st.com.key" # 將domain name2替換成您申請證書時的第二個域名。 SSLCertificateChainFile "D:/phpStudy/Apache/cert/2335105__yg1st.com_chain.crt" # 將domain name2替換成您申請證書時的第二個域名;證書鏈開頭如果有#字符,請刪除。 </VirtualHost>
改完之后,注意這文件里有一些關於logs文件的,路徑一定要改對,根據實際路徑來
比如我的就是:
ErrorLog "D:\phpStudy\Apache\logs\error.log" TransferLog "D:\phpStudy\Apache\logs\access.log"
改完之后打開cmd
進入你的apache安裝目錄的bin目錄下
使用:httpd -t
測試,如果有報錯就根據提示信息修改;沒有報錯則重啟apache即可
網站成功安裝證書,可以用https打開
這樣做完的結果是,用https可以打開,但是http開頭的還是打不開
還需要設置讓http開頭的網站自動跳轉到https開頭
在httpd.conf的<Directory>標簽內,鍵入以下內容
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R=301]
當然我的不完全是這樣,因為我有設置別的偽靜態規則,因此做了一些調整
證書安裝完成之后,發現在谷歌瀏覽器里左上角有個提示,點開顯示網站連接並非完全安全
原因是我們的頁面存在一些不安全的http請求,比如圖片、js等靜態文件。
我們只需要將其升級為https請求即可。
頁面的head中加入:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
意思是自動將http的不安全請求升級為https
添加之后,谷歌瀏覽器顯示“鏈接是安全的”