微信公众平台将于2018年8月23日更换 api.weixin.qq.com 的HTTPS服务器证书,少部分服务器上可能没有部署对应的根证书,将导致获取token、群发消息等接口无法使用,请各位开发者于2018年8月23日之前配合做以下检查或变更。
第一步:验证证书
经过测试,目前绝大部分操作系统和执行环境中已经内置了该根证书,开发者服务器(非用户浏览器)不需要做任何变更。
微信公众平台的服务器证书支持多域名,即API域名(api.weixin.qq.com)与API容灾域名(api2.weixin.qq.com)使用同一张证书,正常情况下请使用api.weixin.qq.com域名,新证书与旧证书的证书链区别如下:(左边新,右边旧)
可以通过以下方法验证:
1)linux服务器
通过 curl -v "https://api2.weixin.qq.com/testcert?appid=xxxxxx"
自测,查看证书issuer是否为CN=GeoTrust RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US,如果issuer匹配,请求结果返回 “Certificate test passed!” 则表示证书不需要更新处理。如果issuer不匹配或是出现其他异常没有返回 “Certificate test passed!” 则需要第二步进行修正。
2)windows服务器
可通过IE浏览器访问 https://api2.weixin.qq.com/testcert?appid=xxxxxx, 如果证书显示正常,页面返回 “Certificate test passed!”,则不需要更新根证书。
或者在控制台窗口运行certmgr.msc,在操作菜单栏中打开查找证书,在所有颁发给域中搜索包含Baltimore,如果显示有颁发给BaltimoreCyberTrustRoot的证书则不需要更新证书。
如果出现异常请参考第二步的修正指引。
第二步:修正指引
如果上述检查步骤自测通过,则下面安装证书步骤可以跳过。
如需安装证书,请点击下载,也可移步官网下载证书:https://dl.cacerts.digicert.com/BaltimoreCyberTrustRoot.crt
部分服务器操作系统证书安装指引:
1)centos系统
wget https://dl.cacerts.digicert.com/BaltimoreCyberTrustRoot.crt
openssl x509 -inform der -in BaltimoreCyberTrustRoot.crt >> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
update-ca-trust
2)ubuntu系统
sudo cp BaltimoreCyberTrustRoot.crt /usr/local/share/ca-certificates/BaltimoreCyberTrustRoot.crt
sudo update-ca-certificates
3)windows系统
下载更证书文件后,直接打开文件按照提示操作安装即可。
其他环境请参考网络。
注意:业务代码中不要指定证书。当程序中不指定根证书时,会使用系统自带的根证书。绝大部分系统中已内置了api.weixin.qq.com的根证书,所以删除掉指定根证书的代码,不会影响到你的现有业务,后续兼容性也更好。