原文链接:https://dsx2016.com/?p=1790
公众号:大师兄2016
应用场景
手机代理到电脑端
使用测试域名调试微信支付,需要在微信内置浏览器和手机自带浏览器唤起微信支付
测试公众号只配置了https的url地址
tips:
-
微信公众哈后台的支付路径区分http和https
-
hosts文件和nginx配置在没有SSL证书的情况下,无法代理https流量,所以需要申请自签名证书
OpenSSL
github地址
https://github.com/openssl/openssl
官方文档
快捷安装包地址
http://slproweb.com/products/Win32OpenSSL.html
下载window exe安装包
安装OpenSSL
同意,并下一步
记住安装的文件夹路径,待会会用到
下一步
下一步
下一步
下一步
下一步
安装成功
生成SSL
打开安装OpenSSL的文件夹,进入bin目录
以管理员身份打开openssl.exe文件
输入以下命令
genrsa -des3 -out server.key 2048
回车,再依次输入2次密码,直接输入123465就行
完成后自动生成server.key文件
继续使用key自签名生成csr文件
输入以下命令
req -new -key server.key -out server.csr
注意,会先输入密码,在输入其他信息,最后再输入密码
参数说明
Country Name (2 letter code) [AU]:CN #国家
State or Province Name (full name) [Some-State]:Beijing #省
Locality Name (eg, city) []:Beijing #市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ncda #公司
Organizational Unit Name (eg, section) []:IT #部门
Common Name (e.g. server FQDN or YOUR name) []:localhost #域名 这里需要输入服务器的域名
Email Address []:kong.weisheng@nidec.com #邮箱
到这里就生成了server.csr文件
删除密码
为了避免每次启动服务器都要输入SSL密码,在这里生成一个不需要密码的key
输入以下命令
[dsx_def_highlightjs code=code]
rsa -in server.key -out server_no_passwd.key
输入之前设置的密码确认即可
继续生成自签名文件
x509 -req -days 365 -in server.csr -signkey server_no_passwd.key -out server.crt
到这里就可以了
双击server.crt安装证书
设置hosts
开启nginx
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 代理测试环境
server {
listen 80;
server_name test.com;
location / {
# root html;
# index index.html index.htm;
proxy_set_header host $host;
proxy_pass http://127.0.0.1:8095;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# test
server {
listen 443;
# test
server_name test.com;
ssl on;
# root html
# index index.html index.htm;
# SSL证书放在了同级目录small文件夹下面
ssl_certificate cert/test/server.crt;
ssl_certificate_key cert/test/server_no_passwd.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
# 指向当前的某个服务端口
proxy_pass http://127.0.0.1:8095;
#设置请求头,并将头信息传递给服务器端
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
继续前往,虽然没有小绿锁,但是能正常访问并获取数据
也能唤起微信支付了
END.