經(jīng)過(guò)幾天的踩坑,終于把微信小程序服務(wù)器配置好了,下面是具體的步驟,以下均按照阿里云的suse11 sp3服務(wù)器操作。
本文主要內(nèi)容:
1、配置瀏覽器認(rèn)可的HTTPS;
2、配置wss協(xié)議的websocket。
一、配置Apache 支持HTTPS
1、安裝openssl
1.1、去官網(wǎng)下載http://www.openssl.org/source/,然后安裝,具體命令在此不給出
1.2、安裝完成后,設(shè)置path路徑,查看是否安裝成功:
vi /etc/profile 在文件末尾加入?export PATH="$PATH:/usr/local/ssl/bin/" 這句
source /etc/profile
openssl version
1.3、生成服務(wù)器私鑰和對(duì)應(yīng)的csr文件
openssl req -newkey rsa:2048 -keyout server.key -out server.csr
1.4、生成服務(wù)器證書(shū)
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 365
2、Apache啟用ssl
2.1、在httpd.conf中找到下面兩行去掉前面的注釋 #
LoadModule ssl_modulemodules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
2.2、配置httpd-ssl.conf
SSLCertificateFile "/opt/app/apache/conf/server.crt"
SSLCertificateKeyFile ?"/opt/app/a pache/conf/server.key"
2.3、重啟Apache
service httpd restart
不過(guò)這種方式的證書(shū)瀏覽器一般是不信任的,會(huì)出現(xiàn)類似12306那樣的警告,解決辦法請(qǐng)看第三節(jié)。
二、配置php版?ssl ?websocket服務(wù)器
1、安裝libopenssl-devel
下載網(wǎng)址:http://www.convirture.com/repos/deps/SLES/11.x/x86_64/
rpm -ivh ?libopenssl-devel.xxx.rpm
2、安裝swoole,并啟用ssl
去官網(wǎng)下載最新的安裝包:
解壓然后進(jìn)入解壓目錄:tar -zxvf swoole.xx.tar.gz
phpize
啟用openssl:
./configure --enable-openssl
make && make install
3、啟用swoole擴(kuò)展
在php.ini加入:?extension=swoole.so
4、重啟Apache
用微信小程序開(kāi)發(fā)工具連接wss即可

三、高級(jí)--安裝瀏覽器認(rèn)可的證書(shū)
這個(gè)方法可以省去購(gòu)買證書(shū)的錢(qián)
進(jìn)入網(wǎng)頁(yè):https://www.startssl.com/
注冊(cè)一個(gè)賬號(hào),然后驗(yàn)證域名



然后點(diǎn)擊發(fā)送驗(yàn)證碼,輸入驗(yàn)證碼即可,然后生成crt文件

第一欄輸入要生成的證書(shū)的子域名,一行一個(gè)
第二欄輸入要服務(wù)器生成的csr文件,必須微2048位,然后提交即可生成crt文件
下載證書(shū):

上傳證書(shū)到服務(wù)器,然后配置httpd-ssl.conf如下圖所示

重啟Apache即可看到證書(shū)被瀏覽器信任。

參考網(wǎng)址:https://www.freehao123.com/startssl-ssl/
四、擴(kuò)展--利用Nginx進(jìn)行ssl代理轉(zhuǎn)發(fā)
如果覺(jué)得Apache配置openssl麻煩,也可以通過(guò)Nginx進(jìn)行代理轉(zhuǎn)發(fā),不過(guò)需要Nginx啟用ssl和安裝openssl。
先從官網(wǎng)下載最新源碼,zlib,?zlib-devel并安裝
./configure ?--prefix=/opt/app/nginx ?--with-http_ssl_module? –with-http_stub_status_module ?--with-openssl=openssl源碼路徑
make && make install
配置文件如下:
server {
listen? 6443 ;
server_name? api.test.com;
ssl_certificate? ? ? /opt/app/nginx/conf/server.crt;
ssl_certificate_key? /opt/app/nginx/conf/server.key;
ssl_session_cache? ? shared:SSL:1m;
ssl_session_timeout? 5m;
ssl_ciphers? HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers? on;
location / {
#root? ?html;
#index? index.html index.htm;
proxy_pass? http://api.test.com;
proxy_set_header? ? Host $host;
proxy_set_header? ? X-Real-IP? $remote_addr;
proxy_set_header? ? X-Forwarded-For $remote_addr;
proxy_http_version? 1.1;
proxy_set_header? ? Upgrade $http_upgrade;
proxy_set_header? ? Connection? "upgrade";
}
}
參考網(wǎng)站:http://codego.net/450201/
五、注意事項(xiàng)
1、如果編譯swoole的時(shí)候提示GCC版本過(guò)低,可以編輯 vi /opt/tools/web/swoole-src-1.8.13-stable/swoole_config.h,將以下文件語(yǔ)句屏蔽即可

2、編譯的時(shí)候如果提示找不到openssl,請(qǐng)安裝libopenssl-devel開(kāi)發(fā)包,安裝完后還是提示沒(méi)有openssl,請(qǐng)先安裝完Nginx后再編譯安裝。
3、生成證書(shū)的時(shí)候,秘鑰的位數(shù)和申請(qǐng)的時(shí)候一定要一致,不然網(wǎng)站會(huì)訪問(wèn)不了。
4、每次啟動(dòng)ssl需要輸入密碼,不需要密碼的解決辦法
openssl rsa -in server.key -out server.key.unsecure
然后修改http-ssl.conf配置文件:
SSLCertificateKeyFile? "/opt/app/a pache/conf/server.key.unsecure"
5、查看端口占用:netstat -anp | grep 9502
6、微信小程序開(kāi)發(fā)工具連不上websocket的時(shí)候,請(qǐng)換個(gè)端口,原因未知。
7、如果出現(xiàn)下面類似情況,請(qǐng)啟用Apache相關(guān)模塊

