微信小程序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 相关文章推荐
IE无法设置短域名下Cookie
Sep 23 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 Javascript
jQuery1.6 类型判断实现代码
Sep 01 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
正则中的回溯定义与用法分析【JS与java实现】
Dec 27 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
详解react-redux插件入门
Apr 19 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 Javascript
用React Native制作一个简单的游戏引擎
May 27 Javascript
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
php 阴历-农历-转换类代码
2012/01/16 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
拖拉表格的JS函数
2008/11/20 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python浪漫表白源码
2019/04/05 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
展会邀请函范文
2014/01/26 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
公司职员入党自传书
2015/06/26 职场文书
售房协议书范本
2015/08/11 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python