使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202

前言

使用 acme创建的免费证书,小程序无法使用,考虑不是免费域名导致的问题,因为大多数开发者正常使用。

问题复现

{"errno":600001,"errMsg":"request:fail errcode:-202 cronet_error_code:-202 error_msg:net::ERR_CERT_AUTHORITY_INVALID"}

request:fail errcode:-202 cronet_error_code:-202 error_msg:net::ERR_CERT_AUTHORITY_INVALID

问题分析

  1. nginx配置错误
  2. 证书链不完整
  3. 证书过期

解决方案

  1. 通过 亚数信息-SSL/TLS安全评估报告 网站进行检测。一般来讲 评级为 A 为正常。请确认你的 nginx 配置是否正确。

使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202_第1张图片
以下是一段 nginx 的域名 ssl 证书配置:

ssl_certificate      /*/nginx/cert/*.com.cert;
ssl_certificate_key  /*/nginx/cert/*.com.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 1m;
  1. 使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202_第2张图片证书链不完整(2种解决方案)
    1. 访问 证书链下载/证书链修复 输入你的域名,开始证书链修复,修复后替换你的原秘钥文件(.pem OR .cer )
    2. 使用 acem 签发的证书通常会有以下几个文件,不要直接使用 domain.cer ,请使用 fullchain.cer

证书链 = fullchain.cer = (ca.cer + domain.cer)

使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202_第3张图片

  1. 通过chrom浏览器或者电脑查询证书有效期,查看过期时间
    1. 通过浏览器查看证书信息

使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202_第4张图片

  1. chrom: F12 + Security(安全)

使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202_第5张图片

问题总结

  1. 完整的证书链包括本级域名的证书以及相应颁发机构(CA)的证书信息。
  2. 浏览器只需要具备服务器证书和私钥即可进行认证,而小程序在认证过程中要求使用完整的证书链。
  3. 如果Nginx仅加载了本级域名的证书,而没有加载颁发机构的证书,这将导致证书链不完整。按照证书评级标准,该证书可能被评为B级。对于浏览器来说,可能会出现“不安全”的提示,尽管网页仍能正常访问。当小程序遇到这样的情况时会无法使用,要解决这个问题,请使用完整的证书链。

你可能感兴趣的:(小程序,nginx,ssl)