微信小程序不仅要求必须是HTTPS和WSS,还要求URL里不能有端口号。

一、使用Nginx足够了

常见的服务器有三种:

  • Nginx
  • IIS
  • Apache

这三种服务器都可以配置https,但是没必要全部知道,因为Nginx可以起到反向代理的作用,会配置Nginx就足够了。

二、关于HTTPS协议

HTTP协议默认端口号是80,HTTPS默认端口号是443。
HTTPS协议=HTTP+SSL,而SSL是基于公钥加密算法的。当我们访问一个使用了HTTPS的网站时,这个网站将它的公钥告知浏览器,浏览器在发送请求数据时会使用公钥对数据进行加密,这样一来就不怕有人监听数据包了,因为只有拥有私钥,才能够“理解”这些数据包。
对于普通的HTTP数据包,都是未加密的,很容易被监听。比如,当我们连上一个wifi后,我们的一切流量都用从路由器上经过,这个路由器接上抓包软件就能够看到一切,不加密的数据包简直相当于裸奔!所以,不要贪图便宜连接不知来源的wifi,更不要在不信任的wifi下填写密码表单,那样很容易泄露个人信息。而HTTPS协议能够大大解决这个问题。

对于一个现代化的网站,如果拥有自己的用户,那么就一定有使用HTTPS的必要。要全网站都是用HTTPS而不是部分链接使用HTTPS,因为访问HTTP链接的时候携带着跟访问HTTPS链接时一模一样的cookie,这就有可能泄露sessionId,而泄露sessionID跟泄露密码差不太多。

HTTPS并非百利而无一害,它对服务器性能提出了更高的要求。因为加密、解密的过程也是一个不可忽略的性能消耗。

三、获取SSL证书

获取SSL证书,最简单、最正确的姿势是使用腾讯云,申请SSL,这个过程是免费的,并且不需要任何命令行。
链接如下:
https://cloud.tencent.com/product/ssl

如果不想了解更多关于证书的内容,可以跳过下面。

证书结构

配置一个HTTPS服务所需要的证书包括几个部分:

  • Server Key(服务器私钥)
  • CSR(Certificate Signing Request)
  • CRT(X509 Certificate)

创建证书的基本流程是这样:

  • 生成自己的服务端私钥
  • 输入基本信息并用私钥签名生成CSR
  • 提交CSR给证书机构CA(免费或商业证书)签名生成CRT,或自己做CA签名生成CRT(自签名证书)。自签名证书和证书机构签名生成证书前两个步骤都是一样的,在这里统一说明一下。

自己生成证书(即公私钥)

自己生成证书最大的坏处就是,访问此网站时,浏览器会提示证书不受信任。

# 1、首先,进入你想创建证书和私钥的目录,例如:
cd /etc/nginx/# 2、创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024
这句话生成server.key,这个文件长度为1024字节,这就是私钥,是服务器用来解码用户请求的宝贝。# 3、创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr# 4、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key# 5、最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.c

第3个命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。

四、配置Nginx

在/etc/nginx/conf.d目录下新建https.conf

upstream websocket{server weiyinfu.cn:8080;
}
upstream web{server weiyinfu.cn:8080;
}
server {listen       443;server_name  weiyinfu.cn;ssl                  on;ssl_certificate      /etc/nginx/weiyinfu.cn/Nginx/1_weiyinfu.cn_bundle.crt;ssl_certificate_key  /etc/nginx/weiyinfu.cn/Nginx/2_weiyinfu.cn.key;ssl_session_timeout  5m;ssl_session_cache shared:SSL:50m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2  SSLv2 SSLv3;ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_ciphers   on;location /wss {access_log /var/log/nginx/come-websocket.log;proxy_pass http://websocket/; # 代理到上面的地址去proxy_read_timeout 60s;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';}location / {#root   html;#index  testssl.html index.html index.htm;access_log      /var/log/nginx/https-reverse.log;proxy_redirect off;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_pass http://weiyinfu.cn/;}
}

此文件包含两部分,第一部分配置wss,第二部分配置https

五、将http重定向到https

server {  listen  192.168.1.111:80;  server_name test.com;  rewrite ^(.*)$  https://$host$1 permanent;
}

举例:将访问目录 \services 由http访问 重定向到 https (解决方法:nginx rewrite 加上 location 方式实现)

location ~ /services/.*$ {if ($server_port ~ "^80$"){set $rule_0 1$rule_0;}if ($rule_0 = "1"){rewrite /(.*) https://IP地址/$1 permanent;                       break;}}

六、验证是否配置成功

nginx -t 命令测试一下
service nginx reload重新加载配置
观察/var/log/nginx查看日志

/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (显示表示配置文件没有错误)service nginx reload (重新加载nginx服务)
netstat -lan | grep 443 (查看443端口)  

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到这一行 就表示HTTPS已经在工作了)

参考资料

官网文档http://nginx.org/en/docs/http/websocket.htm
http://www.wxapp-union.com/portal.php?mod=view&aid=2105
http://www.cnblogs.com/yun007/p/3739182.html
关于HTTPS详尽的介绍

转载于:https://www.cnblogs.com/weiyinfu/p/7389744.html

Nginx配置https和wss相关推荐

  1. Nginx配置https,反向代理多实例tomcat的操作记录

    案例说明: 前面一层nginx+Keepalived部署的LB,后端两台web服务器部署了多实例的tomcat,通过https方式部署nginx反向代理tomcat请求.配置一如下: 1)LB层的ng ...

  2. nginx 配置https 并解决重定向后https协议变成了http的问题

    nginx 配置https 并解决重定向后https协议变成了http的问题 参考文章: (1)nginx 配置https 并解决重定向后https协议变成了http的问题 (2)https://ww ...

  3. linux location root访问文件夹404_如何使网站支持https访问?nginx配置https证书

    购买SSL证书 要想使用https访问你的网址,首先得拥有颁发的SSL证书.我使用的是免费版,有效期为一年,过期后再重新申请. 申请SSL证书 购买后,可在搜索框输入证书关键字进入到控制台. 点击证书 ...

  4. 1 阿里云Nginx配置https实现域名访问项目

    第一步:签署第三方可信任的 SSL 证书 证书可以直接在阿里云里面申请免费的ssl证书 登录阿里云账号,在上方搜索栏内搜索ssl,点击ssl证书(应用安全) 来到这个页面后点击购买证书 如图选择免费版 ...

  5. 腾讯云Nginx配置https

    1. 申请ssl证书(腾讯云为例) 登录腾讯云的控制台 https://console.cloud.tencent.com/ssl 申请免费证书 确认申请 如果是腾讯云的域名就选择自动DNS,不是的话 ...

  6. Nginx配置https访问

    在这里我使用的是阿里云ECS,里面提供一年免费SSL证书 1.什么是HTTPS 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol ...

  7. 【微信小程序】 apache配置https,nginx配置https

    1,简介 最近在做一个微信小程序的项目,把我搞得焦头烂额,微信小程序默认必须使用https加密请求,现在配置好了,所以记录一下,如果你也遇到疑惑,希望下面的文章可以帮到你~~! 2,配置https必须 ...

  8. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  9. Nginx配置HTTPS客户端认证

    Nginx配置HTTPS客户端认证 最近折腾自己个人网站,有一个私人模块,只能自己访问,使用登录授权方式虽然也能达到目的,但每次都要登录,且密码也不一定安全.想起学HTTPS的时,有一个客户端证书的概 ...

最新文章

  1. 十分钟学会用Go编写Web中间件
  2. CentOS7没有ifconfig命令的解决方法
  3. java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...
  4. ad怎么批量改元器件封装_ad中如何批量修改封装
  5. php店铺处罚功能开发,Shopee平台店铺扣分惩罚机制详析!
  6. 计算机的显示器作用是什么意思,显示器中的DCR是什么意思 显示器dcr要不要开...
  7. opencv将整数像素图片转化为浮点型
  8. Spotify 每周推荐功能:基于机器学习的音乐推荐
  9. 原理解析!腾讯3轮面试都问了Android事件分发,已整理成文档
  10. there was an error while executing  `VBoxManage`,a CLI used by Vagrant for controlling VirtualBox. T
  11. fir 低通 matlab,MATLAB常用的FIR滤波器设计方法之窗函数法
  12. 007:Scrapy核心架构和高级运用
  13. ffmpeg硬件解码器的使用
  14. MobilePose: Real-Time Pose Estimation for Unseen Objects with Weak Shape Supervision
  15. 提取金山词霸2005的词库
  16. NLP-D59-nlp比赛D28—我想,也好—阶段总结—心态调整
  17. USB驱动框架分析1
  18. ajax在加拿大什么位置,加国小常识 教你读懂加拿大地址邮编
  19. 数字化转型过程中的六要素(5M1E):
  20. “软件教父”又开始整理模式了!

热门文章

  1. Mac 终端 显示隐藏文件
  2. Python编码规范和Python风格规范
  3. 7.1 XHTML的规范化
  4. 关系型数据库知识小结
  5. 【实验】修改数据文件名字的三种途径
  6. 福布斯评最佳与最差老板 TCL上黑榜
  7. 一个表格,一部分允许编辑,有公式的单元格不允许编辑
  8. mysql日志文件转存_【转】Mysql日志文件
  9. 数据分析入门必知:机器学习最通俗的解释?
  10. 计算机网络中使用的双绞线通常是16芯的,自考计算机应用基础判断题试题答案...