小程序请求后台报TLS版本必须大于等于1.2

  在调试小程序时,竟然报如下错误:

  由于我们后台服务是通过nginx转发的,所以需确认nginx的配置是否有问题,打开发现如下:

server {
    listen       443 ssl;
    server_name  xxx.test.xxx.com;

    ssl on;
    ssl_certificate       /data/nginx/xxx/tt.crt;
    ssl_certificate_key   /data/nginx/xxx/tt.key;        

    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:MEDIUM:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!EDH-RSA-DES-CBC3-SHA:!ECDHE-RSA-DES-CBC3-SHA:!AECDH-DES-CBC3-SHA:!DES-CBC3-SHA:!AECDH-AES128-SHA:!AECDH-AES256-SHA:!AECDH-RC4-SHA:!ECDHE-RSA-RC4-SHA:!RC4-MD5:!RC4-SHA;

    location / {
        root html;
    }

    location /xxx-front {
        proxy_pass   http://10.110.99.108:23000/xxx-front;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   html;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

  果然有TLSv1.2以下的版本TLSv1、TLSv1.1。于是将ssl_protocols修改为TLSv1.2,重启nginx,竟然报ERR_SSL_VERSION_OR_CIPHER_MISMATCH,于是进一步修改ssl_ciphers配置值(并同步把其它server的也修改了),如下所示:

server {
    listen       443 ssl;
    server_name  xxx.test.xxx.com;

    ssl on;
    ssl_certificate       /data/nginx/xxx/tt.crt;
    ssl_certificate_key   /data/nginx/xxx/tt.key;        

    ssl_session_timeout 5m;
    
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:MEDIUM:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!EDH-RSA-DES-CBC3-SHA:!ECDHE-RSA-DES-CBC3-SHA:!ECDHE-RSA-DES-CBC3-SHA:!DES-CBC3-SHA;

    location / {
        root html;
    }

    location /xxx-front {
        proxy_pass   http://10.110.99.108:23000/xxx-front;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   html;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

  重启nginx后访问OK。

 

附:

一.特别特别注意的是,如果当前的nginx.conf中还有其它server配置不符合要求,也会报错,虽然请求和其它server没有关系。

二.要知道自己的服务器是否已经开启了哪个版本的TSL呢,这是一个可以分析ssl服务器的在线工具:https://www.ssllabs.com/ssltest/index.html,进入这个网站,输入自己服务器的ip或者域名。

posted on 2018-08-11 21:01  bijian1013  阅读(606)  评论(0)    收藏  举报

导航