前言

最近想把完美韵脚搞个小程序版,微信小程序需要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 admin@example.com
改成自己的域名:
ServerName www.wanmeiyunjiao.com:443
ServerAdmin admin@www.wanmeiyunjiao.com

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"
我这边的 S R V R O O T 在 h t t p d . c o n f 定 义 为 A p a c h e 24 的 路 径 : C : / A p a c h e 24 ‘ D e f i n e S R V R O O T " C : / A p a c h e 24 " ‘ ‘ S e r v e r R o o t " {SRVROOT}在httpd.conf定义为Apache24的路径:C:/Apache24 `Define SRVROOT "C:/Apache24"` `ServerRoot " SRVROOT在httpd.conf定义为Apache24的路径:C:/Apache24‘DefineSRVROOT"C:/Apache24"‘‘ServerRoot"{SRVROOT}"`

2.4 最终简略配置
<VirtualHost _default_:443>
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.wanmeiyunjiao.com:443
ServerAdmin admin@www.wanmeiyunjiao.com
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 一篇文章就够了

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐