环境:winserver2012 R2 wamp环境
安卓无法发起请求https://www.jianshu.com/p/61695bfae5f7?utm_campaign
一、 wamp3.0.6 这个版本的mod_ssl.so 应该是存在问题,使用这个是配置不成功的。
解决办法:
1) 将wamp2.5中的mod_ssl.so复制到 wamp64\bin\apache\apache2.4.23\modules,
2) 同时还复制了libeay32.dll,openssl.exe,ssleay32.dll;
由于当时是先执行的第2步后执行的第1步,所以不太确定第2步是否一定是必须的。
这里的openssl.exe 可能还存在一个坑, 可能会报2个错误
1) 未识别的什么什么序数 (这个 是直接运行openssl.exe的时候出现的)
2 )Cannot load modules/mod_ssl.so into server: (命令行执行httpd.exe -t 的时候出现的)
3 )缺少mvcR11;(这个好像也是直接运行openssl.exe的时候出现的) 哈哈 由于这是后补的笔记,不记得具体的名字了。
解决办法:
问题1和2:自己安装openssl https://slproweb.com/products/Win32OpenSSL.html 选择Light 的应该就可以,这里我不确定,是因为两个版本的我都安装了~
问题3: 其实就是安装VC++2012 https://www.microsoft.com/zh-CN/download/details.aspx?id=30679; x86和x64的最好都装
这些处理完之后wamp应该可以正常启动了,前提是下面的工作你已经做好了。
二 、 wamp支持https需要修改的配置文件:
1 配置conf/httpd.conf:
找到如下行并去掉#
#LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf
另外,要确认以下两行至少有一行是去掉#的:
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
2 配置conf/extra/httpd-ssl.conf
Listen 443
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLHonorCipherOrder on
SSLProtocol TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache dbm:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache"
#SSLSessionCache "shmcb:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
DocumentRoot "d:/wamp64/www"
ServerName tryservice.*******.com:443
#ServerAdmin admin@tryservice.*******.com
ErrorLog "d:/wamp64/logs/apache/apache_error.log"
TransferLog "d:/wamp64/logs/apache/access.log"
SSLEngine on
SSLCertificateFile "d:/wamp64/cert/tryservice/public.pem"
SSLCertificateKeyFile "d:/wamp64/cert/tryservice/214************.key"
SSLCertificateChainFile "d:/wamp64/cert/tryservice/chain.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
##
<Directory "d:/wamp64/bin/apache/apache2.4.23/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
##
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "d:/wamp64/logs/apache/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
三、 Nginx转发
由于我的需求是为 小程序提供接口,但是我的服务器上部署了很多应用,有php的环境也有java的环境。这里踩了很多坑。
需求:
1 小程序的回调地址要配置为ip+端口模式 : https://xxx.xxx.com:9999
2 PC端浏览要隐藏端口号
3 同时要支持wamp中的多个项目使用都正常
解决办法:
小程序的文档有要求,我的理解就是要么白名单和程序里都带端口,要么都不带端口;我选择都带端口。此时PC端也是需要带 端口才能正常访问的,这个时候就需要用ngnix做个转发,其实配置不复杂,当时理清这个逻辑关系的时候还是花了一点时间。也是自身水平有限。。。
问题1:上面配置Apache的https即可
Ngnix配置
问题2 由于给小程序用,必须要https的,所以除了上面配置了Apache的https,Nginx也需要配置https,这是个人理解,没有验证。目前这种配置是正常使用的。
注意:rewrite 和 proxy_pass 有区别, rewrite 浏览器里还会显示端口号。proxy_pass就不会了,如果是http协议就把ssl协议的相关配置去掉即可
server {
listen 443 ssl;
server_name xxx.xxx.com;
#rewrite ^(.*)$ https://$host:你的服务端口号$1 permanent;
ssl_certificate SSL证书存放的路径,这里用的绝对路径/xxx.pem;
ssl_certificate_key SSL证书存放的路径,这里用的绝对路径/xxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://127.0.0.1:你的服务端口号;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
问题3:
server {
listen 80;
server_name xxx1.xxx1.com;
location / {
proxy_pass http://127.0.0.1:你的另一个服务端口;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这一套全搞完,就完成了wamp3.0.6配置https服务,为小程序提供接口。同时满足浏览器访问隐藏端口号。欢迎大神拍砖!