微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)


Posted in Javascript onJanuary 12, 2017

微信小程序Server环境配置详解

主要内容:

1. SSL免费证书申请步骤
2. Nginx HTTPS 配置
3. TLS 1.2 升级过程

微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书

小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置好 https之后,如果 TLS 的版本较低,就涉及到升级问题

所以 Server端环境配置的主要步骤:

  1. 申请 SSL 证书
  2. 配置web服务器支持https(我使用的是nginx)
  3. 升级到 TLS 1.2 

SSL证书申请

https 需要使用SSL证书,这个证书的价格为每年三五千到一万多,对于小团队或者是想熟悉一下小程序的用户来说,这个价格还是比较高的,这种情况可以选择免费证书,另外,也可以考虑一下云服务,例如 野狗LeanCloud 这些成熟的服务平台,都支持 https,如果这些平台能满足自己的业务需求,就省掉了很多麻烦

 免费证书:阿里云上的 赛门铁克 免费型DV SSL

申请过程

wanwang.aliyun.com

登录控制台,点击左侧菜单中的 安全 -> 证书服务,这个页面中右上角有 购买证书 按钮,点击进入购买页,选择免费型DV SSL,购买

微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)

订单金额为0元,只是走一遍购买流程,完成后回到证书服务页面,可以在列表中看到一个证书

微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)

首先进行 “补全” 操作,填写自己的域名和基本信息

之后 “补全” 连接会变为 “进度”,点击后根据提示操作,主要是验证自己的服务器,我选的是文件验证,下载一个文件上传到自己服务器,等待验证

验证没问题后,大概10分钟左右就可以下载SSL证书了

Nginx HTTPS 配置

证书上传到nginx目录下,例如

/usr/local/nginx/cert

修改 conf/nginx.conf

配置 HTTPS server 块儿,添加SSL配置

# HTTPS server
#
server {
  listen    443 ssl;
  server_name localhost;
  ......
  
  ssl on;
  ssl_certificate  /usr/local/nginx/cert/213994146300992.pem;
  ssl_certificate_key /usr/local/nginx/cert/213994146300992.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 / {
    root  html;
    index index.html index.htm;
  }

  ......
  
}

重新加载配置文件,浏览器中使用 https 方式访问自己的域名,看是否可以正常访问

升级到 TLS 1.2查看 TLS 版本

访问 https url 后,地址栏前面会有一个绿色小锁图标,点击它可以查看到 TLS 版本信息

如果没有达到 1.2 就需要升级

下面的操作环境为 centos linux

1)查看 openssl 版本

https://www.openssl.org/source/

1.0.2以下的版本就要升级,之前的版本官方都已经停止维护

2)升级 openssl

到官网下载新版

https://www.openssl.org/source/

例如下载到 /usr/local

升级 

cd /usr/local
tar zxvf openssl-1.0.2j.tar.gz 
cd openssl-1.0.2j 
./config --prefix=/usr/local/openssl 
make && make install 
mv /usr/bin/openssl \
  /usr/bin/openssl.OFF 
mv /usr/include/openssl \
  /usr/include/openssl.OFF 
ln -s \
  /usr/local/openssl/bin/openssl \
  /usr/bin/openssl 
ln -s \
  /usr/local/openssl/include/openssl \
  /usr/include/openssl 
echo "/usr/local/openssl/lib"\
  >>/etc/ld.so.conf 
ldconfig -v

验证

openssl version -a

3)重新编译 nginx

升级OpenSSL之后,nginx需要重新编译,否则TLS还是旧版本的

下面是基本安装,如您需求更多,请自行调整

用到的软件

openssl

前面已经安装完了

pcre

下载地址

http://www.pcre.org/

例如下载到 /usr/local

cd /usr/local
tar -zxv -f pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre/
make && make install

zlib

下载地址 

http://www.zlib.net/

例如下载到 /usr/local

cd /usr/local
tar -zxv -f zlib-1.2.10.tar.gz
cd zlib-1.2.10
./configure --prefix=/usr/local/zlib/
make && make install

编译nginx

tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2

./configure \
--user=用户 \
--group=组 \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-openssl=/usr/local/openssl-1.0.2j \
--with-pcre=/usr/local/pcre-8.39 \
--with-zlib=/usr/local/zlib-1.2.10 \
--with-http_stub_status_module \
--with-threads

make && make install

编译完成后,记得把修改配置文件,添加好 SSL 的相关信息

然后启动nginx,访问 https url 再次验证 TSL 版本

小结

经过这些步骤,微信小程序就可以和后端正常沟通了

参考地址:http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=2652402451&idx=1&sn=56e3122d6c8774ba457d2ced49c8321a&chksm=8bd8f5f5bcaf7ce3e4b51336e7e7debbaad5c6e02954982756ed0da0572127b61d8754f6cb79&mpshare=1&scene=23&srcid=0110JlMJP90O3osLzHgO3onE#rd

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
基于jquery的仿百度的鼠标移入图片抖动效果
Sep 17 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
2014年50个程序员最适用的免费JQuery插件
Dec 15 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 Javascript
浅谈JS原型对象和原型链
Mar 02 Javascript
Spring MVC中Ajax实现二级联动的简单实例
Jul 06 Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
JavaScript利用Date实现简单的倒计时实例
Jan 12 #Javascript
React组件的三种写法总结
Jan 12 #Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 #Javascript
jQuery命名空间与闭包用法示例
Jan 12 #Javascript
jquery实现百叶窗效果
Jan 12 #Javascript
基于JavaScript实现带缩略图的轮播效果
Jan 12 #Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 #Javascript
You might like
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
Use Word to Search for Files
2007/06/15 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
js 单引号 传递方法
2009/06/22 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
vue axios用法教程详解
2017/07/23 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
Python中的index()方法使用教程
2015/05/18 Python
python 文件转成16进制数组的实例
2018/07/09 Python
详解python中@的用法
2019/03/27 Python
Python中请不要再用re.compile了
2019/06/30 Python
pandas 空数据处理方法详解
2019/11/02 Python
python global和nonlocal用法解析
2020/02/03 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
医院感染管理制度
2015/08/05 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Nginx的基本概念和原理
2022/03/21 Servers
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技