原文:https://mp.weixin.qq.com/s/Tw4UzX73Q7MSw3GJXnpN8A
微信小程序開發https設置
微信官方規定小程序的允許請求的地址都是https開頭,所以如果你想搞微信小程序開發,那么服務的地址都必須以https協議的方式提供,也就是說http是不能用的。而且每個月僅能做出5次修改,所以且行且珍惜吧!
在瞎jb折騰了三天后,https安全協議的問題終於解決了。其實你也不必擔心,因為需要修改的地方也就兩三處。只要你跟着我的思路走,問題肯定是可以解決的。我的環境如下:
-阿里雲CES
-Windows Server2008
-Apache2.4(包含了ssl模塊,推薦下載Appserv安裝包,Apache,Mysql和PHP一起打包配套好了,很方便)
一. 證書申請
我使用的是阿里雲的免費證書,在CA證書功能項下點擊申請就行,阿里雲官方會給你生成所有你想要的配置文件,並在域名解析中插入一條非常必要的TXT記錄。然后你把這個證書包下載后,放置到Apache下新建的cert目錄,就可以進入到后續的步驟了。
這個步驟相對來說比較簡單,需要注意的地方也不多,按照阿里雲官方的提示來,就能夠操作成功了。值得注意的是你在申請證書過程中,證書是免費的,你不用付費,但是需要下單,下單完成后需要完善你的域名信息,然后提交審核。審核完成后,官方自動給你發放證書,順利的話一個小時就能搞定。
好多同學申請證書時,下單后不管了,等着他給你發,可域名信息沒有填呀,官方也不知道你給那個域名申請證書,所以完善域名信息這個步驟不要忘了。
二. 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,新的設置就會啟用了。
上個最后配置成功后,請求的效果吧!