本文主要内容:
1、配置浏览器认可的HTTPS;
2、配置wss协议的websocket。
一、配置Apache 支持HTTPS
1、安装openssl
1.1、去官网下载http://www.openssl.org/source/,然后安装,具体命令在此不给出
1.2、安装完成后,设置path路径,查看是否安装成功:
vi /etc/profile 在文件末尾加入 export PATH="$PATH:/usr/local/ssl/bin/" 这句
source /etc/profile
openssl version
1.3、生成服务器私钥和对应的csr文件
openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr
1.4、生成服务器证书
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
不过这种方式的证书浏览器一般是不信任的,会出现类似12306那样的警告,解决办法请看第三节。
二、配置php版 ssl websocket服务器
1、安装libopenssl-devel
下载网址:http://www.convirture.com/repos/deps/SLES/11.x/x86_64/
rpm -ivh libopenssl-devel.xxx.rpm
2、安装swoole,并启用ssl
去官网下载最新的安装包:
解压然后进入解压目录:tar -zxvf swoole.xx.tar.gz
phpize
启用openssl:
./configure --enable-openssl
make && make install
3、启用swoole扩展
在php.ini加入: extension=swoole.so
4、重启Apache
用微信小程序开发工具连接wss即可
三、高级–安装浏览器认可的证书
这个方法可以省去购买证书的钱
进入网页:https://www.startssl.com/
注册一个账号,然后验证域名
然后点击发送验证码,输入验证码即可,然后生成crt文件
第一栏输入要生成的证书的子域名,一行一个
第二栏输入要服务器生成的csr文件,必须微2048位,然后提交即可生成crt文件
下载证书:
上传证书到服务器,然后配置httpd-ssl.conf如下图所示
重启Apache即可看到证书被浏览器信任。
参考网址:https://www.freehao123.com/startssl-ssl/
四、扩展–利用Nginx进行ssl代理转发
如果觉得Apache配置openssl麻烦,也可以通过Nginx进行代理转发,不过需要Nginx启用ssl和安装openssl。
先从官网下载最新源码,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.wecareinfo.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.wecareinfo.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”;
}
}
参考网站:http://codego.net/450201/
五、注意事项
1、如果编译swoole的时候提示GCC版本过低,可以编辑 vi /opt/tools/web/swoole-src-1.8.13-stable/swoole_config.h,将以下文件语句屏蔽即可
2、编译的时候如果提示找不到openssl,请安装libopenssl-devel开发包,安装完后还是提示没有openssl,请先安装完Nginx后再编译安装。
3、生成证书的时候,秘钥的位数和申请的时候一定要一致,不然网站会访问不了。
4、每次启动ssl需要输入密码,不需要密码的解决办法
openssl rsa -in yourname.key -outyourname.key.unsecure
然后修改http-ssl.conf配置文件:SSLCertificateKeyFile “/opt/app/a pache/conf/yourname.key.unsecure”
5、查看端口占用:netstat -anp | grep 9502
6、微信小程序开发工具连不上websocket的时候,请换个端口,原因未知。
原作者:huazai123(简书作者) 出自:http://www.jianshu.com/p/9b3ba3192c87#