這裏寫自定義目錄標題
前言
最近想把完美韻腳搞個小程序版,微信小程序需要https形式的訪問,簡單的瞭解後進行了對項目進行項目進行了https配置,期間也遇到幾個坑,這裏記錄下。
我的項目配置:Apache24+Django1.9.2+Python3.5
申請https證書
https證書有免費版、收費版,也可以自己用工具生成,我出賣了個人信息,註冊了騰訊雲,拿到了一個免費使用一年的https證書。
騰訊雲證書下載地址:https://cloud.tencent.com/document/product/400/6814
申請證書我選擇了 文件驗證 ,但是騰訊雲文檔上說的文件驗證我操作沒法訪問,這裏我通過Django設置views的urls來訪問驗證文件來解決的,添加的url如下。
url(r'^.well-known/pki-validation/fileauth.txt$', TemplateView.as_view(template_name=".well-known/pki-validation/fileauth.txt", content_type="text/plain"), name="test"),
驗證後下載證書,下載證書如下:
配置https
放證書文件
我將證書文件放置到Apache24安裝目錄。
1. 配置httpd.conf
打開Apache24/conf/httpd.conf,進行配置修改,建議修改前先備份。
1.1 將配置文件中下面兩行取消註釋,開啓ssl。
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
1.2 將配置文件中下面一行取消註釋,注意 httpd-ahssl.conf 不要取消註釋
Include conf/extra/httpd-ssl.conf
# Include conf/extra/httpd-ahssl.conf
2. 配置httpd-ssl.conf
打開Apache24/conf/extra/httpd-ssl.conf,進行配置修改,同樣建議修改前先備份。
2.1 監聽443端口
Listen 443
443端口是https的默認端口,這裏確認它是443就好。
2.2 配置ServerName
將 ServerName及ServerAdmin由
ServerName www.example.com:443
ServerAdmin [email protected]
改成自己的域名:
ServerName www.wanmeiyunjiao.com:443
ServerAdmin [email protected]
2.3 配置證書文件
SSLCertificateFile "${SRVROOT}/cert/2_www.wanmeiyunjiao.com.crt"
SSLCertificateKeyFile "${SRVROOT}/cert/3_www.wanmeiyunjiao.com.key"
SSLCertificateChainFile "${SRVROOT}/cert/1_root_bundle.crt"
我這邊的{SRVROOT}"`
2.4 最終簡略配置
<VirtualHost _default_:443>
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.wanmeiyunjiao.com:443
ServerAdmin [email protected]
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "${SRVROOT}/cert/2_www.wanmeiyunjiao.com.crt"
SSLCertificateKeyFile "${SRVROOT}/cert/3_www.wanmeiyunjiao.com.key"
SSLCertificateChainFile "${SRVROOT}/cert/1_root_bundle.crt"
</VirtualHost>
重啓Apache
重啓Apache,在網頁中訪問https的網址吧:https://wanmeiyunjiao.com/
訪問結果:
坑&其他
配置時需要將阿里雲 443 端口開啓,如果服務器是阿里雲的話,可以Telnet服務器443端口看下。
在服務器內部可以通過 https://localhost 進行嘗試訪問。
遇到過 assert assert sys.modules[modname] is not old_mod 報錯,我直接將報錯文件的這兩行直接註釋掉了。
參考博客
Apache2.4 HTTPS SSL證書配置
apache配置https
【SSL】配置好SSL仍然無法通過阿里雲服務器訪問https443端口的問題
關於 HTTPS 一篇文章就夠了