背景
微信支付使用HTTPS来保证通信安全,商户与微信支付服务器通信前,要在客户端的操作系统或者执行环境(如JRE等)中部署权威机构的根证书。 商户调用微信支付API的过程中,会用根证书来校验微信支付服务器及域名的真实性。
当前微信支付服务器证书的颁发根CA是Digicert Global Root CA (G1),微信支付计划于2024年8月5日0:00开始,逐步启用采用DigiCert Global Root G2根CA颁发的新服务器证书。
经检查,WindowServer2012以上版本操作系统,默认都内置了DigiCert Global Root G2根证书,因此这些系统无需改动即可兼容新服务器证书。但是WindowServer2008版本系统默认都未内置G2根证书,到时会受到影响,支付可能会出现超时、连接不到服务等问题,需要进行安装操作,确保有DigiCert Global Root G2根证书。
测试验证
游乐宝版本:V8.1.6921
服务器系统:WindowServer2008 R2数据中心版
在系统下,打开C:\Windows\System32\drivers\etc\hosts,在hosts文件中新增一行如下内容,实现将域名“api.mch.weixin.qq.com”绑定到新G2证书环境:
43.142.224.50 api.mch.weixin.qq.com
问题
由于WindowServer2008系统默认没有内置G2根证书,当我们进行微信支付的时候,会出现与微信服务通信失败、请求超时的异常。
这时我们需要在服务器上安装G2根证书,微信支付才能正常操作。
方法一(手动安装根证书)
前提条件
下载好DigiCert Global Root G2根证书、certlm.msc证书管理器程序到服务器本地,证书地址DigiCert Global Root G2,证书管理器程序certlm.msc
操作步骤
1.下载好certlm.msc程序到本地后,双击,打开本地证书管理器
2.导入根证书。
a.选择目标目录(受信任的根证书颁发机构),右键单击鼠标,选择
。
b.导入证书后,展开受信任的根证书颁发机构下的证书,检查是否已安装好DigiCert Global Root G2根证书
方法二(脚本自动安装根证书)
前提条件
下载好DigiCert Global Root G2根证书和安装脚本到服务器本地,证书地址DigiCert Global Root G2,自动安装脚本地址G2-install.ps1,在系统D盘创建一个G2目录D:\G2\,把G2根证书和安装脚本放到该目录,也可以自定义该目录,跟脚本里的certPath路径一致就行
操作步骤
1.点击WindowServer2008系统左下角的开始,在搜索框输入powershell,以管理员身份运行
2.切换到G2目录,然后直接执行脚本.\G2-install.ps1,这时会提示证书已成功导入。
3.执行脚本时,如果提示无法加载文件,因为在此系统中禁止执行脚本,这通常是因为PowerShell的执行策略(Execution Policy)被设置为限制或禁止执行了。这时我们可以输入命令:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,然后按默认值y就行,让从本地计算机加载的脚本不需要签名,再执行脚本就可以成功导入证书。