原文鏈接:https://www.h5av.com/archives/156.html
現在越來越多的地方需要https了,有些是必須的,比如微信小程序的接口鏈接,要求使用https,公眾號上防止運行商插入廣告等。以前的https是需要花錢的,現在有不花錢的,我使用的是阿里雲,像騰訊百度也都有免費的,我沒用過,現在就從頭到尾簡單的介紹一下設置過程。
一.申請SSL證書(阿里雲下的域名)
1.進入阿里雲域名管理列表,找到想申請ssl的域名,點擊管理
2.點擊“免費開啟SSL證書”
3.選擇免費版
4.設置要申請的二級域名(www也是二級域名)
授權系統自動添加TXT解析記錄要勾選,否則還要自己添加解析
5.申請成功后,該申請會出現在“未簽發”選項卡上,點擊申請
6.如果填寫二級域名的時候沒有勾選“授權系統自動添加TXT解析記錄”,那么需要手動添加一條解析,如果勾選可略過
7.點擊驗證
8.大概幾分鍾的時間就會驗證通過,這時“已簽發”選項卡下就會出現剛剛申請的證書信息,點擊“下載”
9.根據自己的環境選擇下載,本教程使用的是Apache,所以選擇下載Apache版本
至此,SSL證書申請完畢
二.配置Apache2.4
1.配置conf/httpd.conf
找到如下行並去掉#
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
另外,要確認以下兩行至少有一行是去掉#的:
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
我的默認配置是自動開啟 mod_socache_shmcb.so 的
2.配置conf/extra/httpd-ssl.conf
如果你之前並未配置過httpd-ssl.conf,那么就按照我的懶人方法來設置,將之前的httpd-ssl.conf備份一份,然后將當前httpd-ssl.conf里面的內容都替換成如下
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:${SRVROOT}/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
##
## SSL Virtual Host Context
##
Define SSLROOT "C:/SSL"
<VirtualHost *:443>
DocumentRoot "C:/webroot/xxxx.h5av.com"
ServerName xxxx.h5av.com:443
SSLEngine on
SSLCertificateFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com_public.crt
SSLCertificateKeyFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com.key
SSLCertificateChainFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com_chain.crt
</VirtualHost>
a) Listen是要監聽的端口,https使用的是443端口,一般不改
b) SSLROOT 是我自己加上的,由於一個域名要指定3個證書文件,所以聲明了一個變量,設置成你存放證書的路徑,這里寫絕對路徑
c) DocumentRoot/ServerName 就不多介紹了
d) 最后指定證書文件:
SSLCertificateFile 對應 public.crt
SSLCertificateKeyFile 對應 key
SSLCertificateChainFile 對應 chain.crt
3.重啟Apache服務
是不是訪問不了?
三.服務器開啟443端口
之前調試了很久,對比了很多參數,為什么不好使呢?最后發現沒有開啟443端口,不同主機上開啟服務器端口的方式也都大同小異,由於我使用的是阿里雲ECS,所以在控制台開啟443端口
1.找到ECS,點擊 更多 → 網絡和安全組 → 安全組配置
2.找到對應的安全組,點擊“配置規則”
3.點擊右上角按鈕“添加安全組規則”
曾經我點擊“快速創建規則”,直接選擇 HTTPS(443),經常失敗,最后還是“添加安全組規則”好用
按照此配置即可
至此443端口開放完畢,若服務器配置了防火牆規則,那么就去服務器上開啟一下入站的443
四.使http訪問自動轉為https訪問
四.使http訪問自動轉為https訪問
配置這個的方式有很多,有在索引文件中判斷協議后做301重定向的,有在Rewrite規則中做重定向的,而我更喜歡的是在vhost中做重定向
vhost重定向
如果你的Apache配置啟用了vhost文件,那么在你的虛擬站點中做如下配置即可
ServerName xxxx.h5av.com
RewriteEngine On
RewriteRule ^/(.*)$ https://xxxx.h5av.com/$1 [R=301]
</VirtualHost>
至此,所有配置完畢