微信小程序Nginx环境配置

环境配置概述

主要内容:
  • SSL免费证书申请步骤
  • Nginx HTTPS 配置
  • TLS 1.2 升级过程

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

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

因此 Server端环境配置的主要步骤:linux

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

 

SSL证书申请

https 须要使用SSL证书,这个证书的价格为每一年三五千到一万多,对于小团队或者是想熟悉一下小程序的用户来讲,这个价格仍是比较高的,这种状况能够选择免费证书nginx

另外,也能够考虑一下云服务,例如 野狗LeanCloud 这些成熟的服务平台,都支持 https,若是这些平台能知足本身的业务需求,就省掉了不少麻烦web

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

申请过程后端

wanwang.aliyun.com

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

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

首先进行 “补全” 操做,填写本身的域名和基本信息浏览器

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

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

 

Nginx HTTPS 配置

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

/usr/local/nginx/cert

修改 nginx配置文件

配置 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 版本

openssl version -a  

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  若是安装过就无需再装

  • zlib 系统自带也行

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
Pcre安装步骤..

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
Zlib安装

编译nginx:

tar zxvf nginx-1.10.3.tar.gz
cd nginx-1.10.3

./configure --prefix=/data/nginx --with-http_ssl_module --with-openssl=/usr/local/openssl
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 版本

 

Nginx编译安装时遇到的问题:

报错信息以下:

/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.10.2‘
make: *** [build] Error 2

须要说明的是,我这里编译所使用的Nginx源码是1.10.2的。根据报错信息咱们知道,出错是由于Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实咱们打开/usr/local/ssl/这个目录能够发现这个目录下是没有.openssl目录的,所以咱们修改Nginx编译时对openssl的路径选择就能够解决这个问题了

解决方案:

打开nginx源文件下的/root/nginx-1.10.2/auto/lib/openssl/conf文件

找到这么一段代码:

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改为如下代码:

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

而后再进行Nginx的编译安装便可 

 

小结

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

相关文章
相关标签/搜索