作者:晴晴qing951025 | 来源:互联网 | 2023-09-05 09:30
近来被https搞晕了,由于需要微信小程序必须用到https协议,安全性比较重要喔!不过对于我们这个嵌入式产品也没什么安不安全。一开始qthttp服务器还是好简单,因为就是TCP连
近来被https搞晕了,由于需要微信小程序必须用到https协议,安全性比较重要喔!不过对于我们这个嵌入式产品也没什么安不安全。一开始qt http服务器还是好简单,因为就是TCP连接上面一个简单协议。后来听说发布小程序必须用到https+域名,估计好多刚开始往小程序里跑的小伙子都哭晕在测所。不过我不负责写小程序,我负责搞用qt 写个http的服务器。所以有后来的艰难例程!—! (你要知道我不懂网络和前端的玩意都是嘛0101那些)
入正题,环境:
qt4+qtcreator+win10
window 2012R2 service
先写好http服务器,网上好多例程,其实qt上面编程不用管https的什么ssl 那些证书什么之类,那是好麻烦等下再说我的遭遇!由于是放在云服务器上面的,所以有固定的IP,你想要https访问必须有域名+申请SSL证书**,这个和编程没关系去申请就可以了。这个过程需要时间,证书是包含xxxxx.crt证书和xxxxx.key文件,如下:
***文件夹,里面好几个服务器的证书和**
我们是需要Nginx这个,你可先百度Nginx什么来的。。
这里下载一个代理服务器Nginx
http://nginx.org/en/download.html
选择Window就可以了,然后放到某路径下这个是不能删的,然后解压。这个玩意一开始被网上好多人说的误导了,搞得安装特别麻烦特别麻烦特别麻烦!!!例如说什么要利用命令行安装,还有用WINSW这个也试过了,安装是成功了但是有点麻烦。Winsw就是一个可以直接命令行操作对你要想操作而它本身不能在命令行操作的nginx等***面软件。。所以现在不用他们,直接找到nginx.exe目录下的conf/nginx.conf的配置文件,用txt打开,写入一个service https,其实里面有一个不过被注释掉了。写其实就关注几点,我的例子如下:
#HTTPS server
server {
listen 443 ssl; #这个不用改必须443默认
server_name www.xxxx.cn; #这个你要改,外网要访问过来的域名,也就是自己的域名
ssl on;
ssl_certificate C:/Https_Certificate/xxxxxxx.crt;#证书路径
ssl_certificate_key C:/Https_Certificate/xxxxxxx.key;#**路径
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
location / {
proxy_pass http://localhost:8090/;#我的软件端口是8090
proxy_connect_timeout 1s; #配置点1
proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 12s; #配置点3
}
}
重要就是证书**,域名,本地软件端口。
然后直接双击上一级的目录里面的nginx.exe,然后会一闪而过,惨了!!!!这个又不行?我当时是这样!然后怎么大神请教后原来已经运行了。你在命令行里输入tasklist查看进程,发现了nginx
好了,着就行了打开你用qt写的http服务器就可以了,nginx其实就是将https握手加密的过程解决了转发数据给你,相当于透传了http。是不是好简单!!!!其中如果配置文件写的不对,重新修改先把nginx关闭,改完再双击启动!关掉可以用tskill nginx命令。。。
好了讲下我的遭遇吧,一开始听说要用ssl,于是要研究了QSslsocket那些玩意,下载了openssl回来生成自签名证书加入到服务器上面还是不行,各种不行。。这过程写了https服务器和客户端来验证,几天写来无果,客户端https外网访问没问题。就是证书加进来老是握手失败。
好了终于解决今天可以睡个好觉了。另外赞下这个nginx真的不错简单代理,他的功能还多着呢!嘻嘻 这种架构方案也不错!感谢qq好友大神1527979930热心指导谢了。。。