微信公眾平臺已經(jīng)于2018年8月23日更換 api.weixin.qq.com 的HTTPS服務(wù)器證書,少部分服務(wù)器上可能沒有部署對應(yīng)的根證書,將導(dǎo)致獲取token、群發(fā)消息等接口無法使用,請各位開發(fā)者于2018年8月23日之前配合做以下檢查或變更。
第一步:驗(yàn)證證書
經(jīng)過測試,目前絕大部分操作系統(tǒng)和執(zhí)行環(huán)境中已經(jīng)內(nèi)置了該根證書,開發(fā)者服務(wù)器(非用戶瀏覽器)不需要做任何變更。
微信公眾平臺的服務(wù)器證書支持多域名,即API域名(api.weixin.qq.com)與API容災(zāi)域名(api2.weixin.qq.com)使用同一張證書,正常情況下請使用api.weixin.qq.com域名,新證書與舊證書的證書鏈區(qū)別如下:(左邊新,右邊舊)
可以通過以下方法驗(yàn)證:
1)linux服務(wù)器
通過 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匹配,請求結(jié)果返回 “Certificate test passed!” 則表示證書不需要更新處理。如果issuer不匹配或是出現(xiàn)其他異常沒有返回 “Certificate test passed!” 則需要第二步進(jìn)行修正。
2)windows服務(wù)器
可通過IE瀏覽器訪問 https://api2.weixin.qq.com/testcert?appid=xxxxxx, 如果證書顯示正常,頁面返回 “Certificate test passed!”,則不需要更新根證書。
或者在控制臺窗口運(yùn)行certmgr.msc,在操作菜單欄中打開查找證書,在所有頒發(fā)給域中搜索包含Baltimore,如果顯示有頒發(fā)給BaltimoreCyberTrustRoot的證書則不需要更新證書。
如果出現(xiàn)異常請參考第二步的修正指引。
第二步:修正指引
如果上述檢查步驟自測通過,則下面安裝證書步驟可以跳過。
如需安裝證書,請點(diǎn)擊下載,也可移步官網(wǎng)下載證書:https://dl.cacerts.digicert.com/BaltimoreCyberTrustRoot.crt
部分服務(wù)器操作系統(tǒng)證書安裝指引:
1)centos系統(tǒng)
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系統(tǒng)
sudo cp BaltimoreCyberTrustRoot.crt /usr/local/share/ca-certificates/BaltimoreCyberTrustRoot.crt
sudo update-ca-certificates
3)windows系統(tǒng)
下載更證書文件后,直接打開文件按照提示操作安裝即可。
其他環(huán)境請參考網(wǎng)絡(luò)。
注意:業(yè)務(wù)代碼中不要指定證書。當(dāng)程序中不指定根證書時(shí),會使用系統(tǒng)自帶的根證書。絕大部分系統(tǒng)中已內(nèi)置了api.weixin.qq.com的根證書,所以刪除掉指定根證書的代碼,不會影響到你的現(xiàn)有業(yè)務(wù),后續(xù)兼容性也更好。