原文:https://mp.weixin.qq.com/s/Tw4UzX73Q7MSw3GJXnpN8Aphp
微信官方规定小程序的容许请求的地址都是https开头,因此若是你想搞微信小程序开发,那么服务的地址都必须以https协议的方式提供,也就是说http是不能用的。并且每月仅能作出5次修改,因此且行且珍惜吧!sql
在瞎jb折腾了三天后,https安全协议的问题终于解决了。其实你也没必要担忧,由于须要修改的地方也就两三处。只要你跟着个人思路走,问题确定是能够解决的。个人环境以下:小程序
-阿里云CES 微信小程序
-Windows Server2008安全
-Apache2.4(包含了ssl模块,推荐下载Appserv安装包,Apache,Mysql和PHP一块儿打包配套好了,很方便)微信
一. 证书申请post
我使用的是阿里云的免费证书,在CA证书功能项下点击申请就行,阿里云官方会给你生成全部你想要的配置文件,并在域名解析中插入一条很是必要的TXT记录。而后你把这个证书包下载后,放置到Apache下新建的cert目录,就能够进入到后续的步骤了。ui
这个步骤相对来讲比较简单,须要注意的地方也很少,按照阿里云官方的提示来,就可以操做成功了。值得注意的是你在申请证书过程当中,证书是免费的,你不用付费,可是须要下单,下单完成后须要完善你的域名信息,而后提交审核。审核完成后,官方自动给你发放证书,顺利的话一个小时就能搞定。阿里云
好多同窗申请证书时,下单后无论了,等着他给你发,可域名信息没有填呀,官方也不知道你给那个域名申请证书,因此完善域名信息这个步骤不要忘了。加密
二. Apache配置
— 修改httpd.conf文件
申请到证书后,下载Apache对应的文件,解压后放置到Apache根目录下新建的cert目录中,若是没有那么就新建一个cert目录。
打开Apache的配置文件httpd.conf,在这个文件中保证这两条语句以下两句话没有被注释,并可以在对应的文件下找到相应的文件。若是找不到相应的文件,那么说明Apache的安装是有问题的,须要下载其余可用的版本。
必须保证如下这两个配置可用,前面没有被“#”号注释:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
第一个配置的意思是加载mod_ssl.so文件,因此应该检查下Apache目录下的modules文件夹中是否存在mod_ssl.so文件;第二句话的意思是导入Apache根目录下conf/extra/文件夹下的httpd-ssl.conf配置文件,也就是下面咱们将要编辑的文件。
以上这两句话很是重要,导入的文件必定是mod_ssl.so和httpd-ssl.conf,网上的教程说的是其余的文件,是不能成功的。
— 修改conf/extra/文件夹下的httpd-ssl.conf文件
下面修改conf/extra/文件夹下的httpd-ssl.conf配置文件,找到Apache根目录下conf/extra/文件夹里的httpd-ssl.conf文件。
添加以下配置:
# 添加 SSL 协议支持协议,去掉不安全的协议 SSLProtocol TLSv1 TLSv1.1 TLSv1.2 # 修改加密套件以下 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 # 证书公钥配置 SSLCertificateFile cert/public.pem # 证书私钥配置 SSLCertificateKeyFile cert/214063864580972.key # 证书链配置,若是该属性开头有 '#'字符,请删除掉 SSLCertificateChainFile cert/chain.pem
这里有几个须要注意的地方:
1.配置的内容不能重复。好比httpd-ssl.conf若是包含了原有的SSLCertificateFile节点,那么把须要把原有的节点注销了,新加入的节点才会有效。
因此在加入以前你应该查找一下原来的文件中是否已经有了必要的配置,若是有了那么把原来的节点内容注销了,而后加入新的配置。
2. 全部的内容都是针对<VirtualHost _default_:443>这个标签中的内容进行修改。若是你修改的是其余的内容,或者是直接把阿里云提供的配置信息复制粘贴到httpd-ssl.conf文件的底部,那么是不会成功的。
3. 修改域名和https指向的根目录。网上不少的文章几乎没有提到过这条内容,这也是不少同窗配置没有成功的根本缘由。需修改<VirtualHost _default_:443>标签下的DocumentRoot和ServerName这两项内容。
DocumentRoot,顾名思义就是https协议指向的根节点,就好像http默认是指向www目录同样。这个配置你能够自定义,也可使用默认的htdocs文件夹,默认状况下是没有这个目录的,新建一个而后拷贝phpinfo.php文件到这个文件夹下。
ServerName就是你在申请证书时填写的域名,注意要保留https默认的端口号443。
这是个人httpd-ssl.conf结尾部分的内容,注意除了SSLProtocol和SSLCertificateChainFile配置以外的内容都被注销了,由于其余的配置我改的是原来的内容,因此从阿里云拷贝过来的相同的内容就注释掉了。
最后重启Apache,新的设置就会启用了。
上个最后配置成功后,请求的效果吧!