更新时间:2024-07-19 11:17:30收藏订阅更新我的文档设置返回文档1. 背景介绍蚂蚁集团网站使用 https 来保证通信安全,开发者的软件或系统调用蚂蚁集团提供的系统服务或 api 过程中会使用数字证书权威认证机构(ca)的根证书来校验蚂蚁集团网站服务器身份的真实性。受 mozilla 根证书信任策略变更影响,digicert 将逐步停用(g1)旧根体系颁发 tls/ssl 证书,并开始使用(g2)新根体系颁发 tls/ssl 证书。蚂蚁集团网站证书当前通过 digicert 签发,根 ca 为 digicert global root ca(g1),计划于 2024 年 08 月 01 日 逐步启用 digicert 新根体系颁发的数字证书,根 ca 为 digicert global root g2。说明:●为保证开发者在 2024 年平滑升级,我们将在服务器上增加部署 digicert global root ca 根对 digicert global root g2 的根交叉认证证书。因此,当前客户端信任根证书库中只要包含 digicert global root g2 或 digicert global root ca 中任意一个即可(baltimore cybertrust root 将不再支持) 。●2026 年后,客户端信任根证书库必须包含 digicert global root g2,否则将会导致与服务器之间的通信异常。 我们强烈建议开发者检查客户端根证书库是否包含 digicert global root g2。2. 根证书信息下表列出了 digicert 颁发的 3 个根证书在常见 os 和执行环境(默认配置下)的兼容性情况: 根证书名称序列号有效期mozilla不再信任时间windowsmacjavaandroidiosfirefox说明33af1e6a711a9a0bb2864b11d09fae52013年8月1日-2038年1月15日2029年4月15日xp sp3 os x 10.10 1.8.0_131 5.0 ios 7.0 32 新证书的根ca,如果出现不能兼容新证书的场景,添加这个根证书到执行环境的信任库。83be056904246b1a1756ac95991c74a2006年11月10日-2031年11月10日2026年4月15日xp sp3 os x 10.6 1.4.2_17 1.1 ios 4.0 2.0 新证书的兼容性根。20000b92000年5月13日-2025年5月13日2025年4月15日xp -1.4.2 2.0 ios 5 1.0 未来不再支持说明:●macos:数据来源于 apple 凯发app官方网站官网 。●linux:系统信任根证书的保存位置因发行版(distribution)的不同有所差异,大部分 linux 发行版使用目录 /etc/ssl/certs/ 或文件 /etc/pki/tls/certs/ca-bundle.crt 来包含系统信任根证书库。●数据主要来源于 digicert 官方发布的兼容性列表 。3. 您需要做什么需要您根据文档下文 如何验证 章节验证贵司 业务系统或组件 与 蚂蚁集团网站系统 交互过程中是否兼容新服务器证书。●如果验证结果为可兼容,贵司不需要做其他事情。●如果不能兼容,建议您按照 修正指引 章节,在 2024 年 07 月 26 日前完成修正。 注意:最晚应于 2024 年 08 月 01 日前修正,否则贵司业务系统与蚂蚁集团网站/服务之间将不能正常进行https 通讯,影响业务正常运行。在验证和修正过程中遇到问题,您可以在文档右下角寻求支付宝开放平台凯发app官方网站的技术支持帮助。4. 如何验证您可通过支付宝开放平台 沙箱环境 或 生产验证环境 来验证贵司系统是否可兼容新的服务器证书。如果您需要验证纯g2环境是否可用,建议使用我们准备的独立域名进行验证, 参考4.1如果您需要暂时通过交叉根实现兼容,建议使用沙箱环境域名进行验证, 参考4.2●若贵司系统可正常获得蚂蚁集团系统的响应,说明是兼容的。●若贵司系统不能正常获得蚂蚁集团系统的响应,很有可能是不兼容的,您需要:a查看贵司系统所使用的 tls/ssl 库的使用文档,确保新服务器证书的根 ca 包含在执行环境的信任根证书库中。我们总结了常见环境可能的修正方法,详情可查看下文 修正指引。b完成上述步骤后,重新验证。4.1 使用digicert global root g2 的验证环境 (推荐)openapi-with-g2-only.alipay.com只提供带有g2的根证书(不部署兼容根) ,如果验证不通过证明缺少g2根证书支持注意⚠️: 测试域名将会在2024年底停止服务,请在验证之后立即修改回openapi.alipay.com,避免将测试域名带入生产环境。为了帮助您验证您的环境是否已经支持 digicert global root g2 根证书 (而不是通过digicert global root ca 实现兼容),我们准备了独立域名用于验证您的环境。此方法需要将代码中 openapi.alipay.com 替换为测试域名 openapi-with-g2-only.alipay.com 进行测试验证。域名启用时间openapi-with-g2-only.alipay.com 2024年7月1日说明:●测试域名只包含 digicert global root g2 根证书,如果验证不通过证明缺少g2根证书支持。 ●生产验证环境可以访问的接口与生产正式环境相同,且被视为生产正式业务。●在使用生产验证环境验证前,请充分评估对贵司业务系统以及业务的影响。 4.2 digicert global root ca 对 digicert global root g2 兼容交叉根的验证环境 沙箱环境部署了带有兼容交叉根的环境,您可以使用沙箱环境来验证,如果没有出现ssl握手错误,就可以说明环境是至少可以通过digicert global root ca实现兼容。说明:●在沙箱环境验证时应使用跟贵司业务系统生产环境相同的操作系统、执行环境、开发语言及程序逻辑进行验证,这样验证出来的结果才是可靠的。●生产环境的appid等配置无法直接在沙箱成功调用接口,但是可以通过是否出现握手失败判断环境是否兼容沙箱环境相关域名参考:域名启用时间openapi-sandbox.dl.alipaydev.com2024年7月1日mapi-sandbox.dl.alipaydev.com2024年7月1日5. 常见问题q1:什么是服务器证书?a:服务器证书通常又称为“ssl证书”、“域名证书”、"ssl certificate"、"server certificate"、"ssl web server certificates"、"tls/ssl server certificate"。通常由权威机构颁发的证书,用于对网站进行身份鉴定,并使客户端与网站之间通过 tls/ssl 协议建立起安全传输通道,https 协议是最常见的基于 tls/ssl 的应用层协议之一。q2:什么是根证书?a:根证书用于标识权威机构的身份,是权威机构用自己的身份私钥对自己的身份公钥签发的数字证书。根证书需要经不易被篡改的通道分发。浏览器、操作系统、tls/ssl 开发库通常随软件发行包预置其信任的权威机构的根证书。q3:如何确认是否可兼容新证书?a:建议按照 如何验证 章节介绍的方法进行验证。如果您对 tls/ssl 技术和应用非常精通,也可仅通过检查相关的系统代码和配置,来判断是否可兼容新证书。q4:请问应在何时安装新的根 ca 证书?a:必须在 2024 年 07 月 26 日前将新的根 ca 证书安装于贵司系统中。2024 年 08 月 01 日起, 我们将在生产正式环境小量灰度应用新证书,以检验凯发k8官方网娱乐官方的合作伙伴系统的准备情况。q5:修正过程中有哪些注意事项?a:必须以新增安装根ca证书的方式(即应该同时兼容老证书和新证书),且必须在 2024 年 08 月 01 日前完成。因为我们将以灰度方式逐步启用新证书,在灰度期间,生产正式环境中将有一部分服务器使用的是新证书,一部分服务器使用的是老证书。q6:本次升级涉及的网站/域名有哪些?a:本次服务器证书升级以证书为操作控制粒度,通过 x.509 v3 的 subject alternative name(san,中文名:主题备用名称)扩展使一个证书可适用于多个域名。本次升级包含三个证书,证书主题通用名(subject commonname)分别为:*.alipay.com、render.alipay.com、*.alipayobjects.com。您可以通过下述方法来协助确认:使用 openssl 命令行工具,快速确认某个域名是否在本次升级范围,命令行格式为:以域名 www.alipay.com为例:如下为运行结果截图,可以看到证书的主题 cn 与上述三个中的第一个相同,说明 www.alipay.com域名在本次升级范围。q7:请问应在何时完成对应验证?如果无法按时完成验证会有什么影响?a:建议您在 2024 年 07 月 26 日前完成验证,最迟应在 2024 年 08 月 01 日完成验证。如果贵司系统的实现方式已能兼容新的服务器证书,那么,不会影响贵司的业务。如果贵司系统的实现方式不能兼容新的服务器证书,那么会导致贵司系统与蚂蚁集团相关系统不能正常交互,影响业务顺利进行。q8:根证书和应用的密钥证书有关么?a:无关,接口签名的密钥证书和 tls 证书没有任何关联。6. 修正指引6.1 java6.1.1 不兼容的现象如果验证时不能正常获得蚂蚁集团系统的响应,并在您的系统中出现如下错误信息,说明不兼容新的证书。6.1.2 修正方案如果您的系统程序是使用 java 程序开发,您使用的信任根证书(truststore)库可能是如下两种情况之一: ●一种是使用 jre 发行包中的 cacerts。●一种是使用自主管理的 truststore。使用 jre 发行包中的 cacertscacerts 文件是 java 环境默认使用的信任根证书库,位于 %java_home%/lib/security/目录下,cacerts 文件本质是一个jks (java keystore),可使用 java 发行包中自带的 keytool 工具来查看和修改,默认密码为“changeit”,keytool 命令行工具在 %java_home%/bin目录下。 蚂蚁集团所提供 java 语言版 sdk 为此种方式。 正常情况下 jdk 1.6.05 及以上版本的 cacerts 应已经包含了 digicert global root ca,jdk 1.8.0 131 及以上版本的 cacerts 应已经包含了 digicert global root g2。 如果系统实际验证结果为不通过,可以通过如下方法检查执行环境中的 cacerts 是否包含蚂蚁集团新服务器证书的根 ca(digicert global root ca 或 digicert global root g2)。检查方法1将cacerts中信息输出为易于阅读的文本形式。命令行下输入如下命令,回车后,输入cacerts的保护密码。 keytool -list -v -keystore %java_home%/lib/security/cacerts > cacerts.txt2查找其中是否包含特定主题的可信证书。 以 digicert global root g2 为例:在上一步中输出的文件中(cacerts.txt)查找是否包含主题(subject)和签发者(issuer)cn(common name)皆为 digicert global root g2 的 trustedcertentry 项目 。说明:证书序列号的显示方式一般有两种。●是带“:”的,以两个 16 进制数一组。●不带":"的,与前一种表示方法相比,其数值相同,但是最左边的0会被省略。如果没有查找到怎么处理方案1 : 添加根证书到 cacerts 如果没有查找到,您需要添加根 ca 证书到 cacerts。 在命令行下输入如下命令,回车后输入 cacerts 的保护密码,看到增加成功的提示即说明添加成功。 参考资料:。方案2 : 升级jdk版本 如果您使用的jdk版本较低(例如1.6或者1.7),可以通过升级到较新的jdk版本 (例如最新版的jdk8或更高版本)来获得支持并获得更好的安全性。使用指定的 truststore如果您的系统程序目前是用指定 truststore 的方式,有两种修正方法:●修改系统实现代码,改为使用 jre 自带 cacerts 的方式,可使用支付宝开放平台提供的 sdk 或参考其写法,同时检查您的 java 版本升级到支持 g2的版本。●在当前 truststore 增加 根ca证书,操作方法与往 cacerts 中增加相同,只是操作的 keystore 对象换成您应用系统中使用的,如下示例:java 中一般使用下述几种方式来指定 truststore:参考资料:。6.2 php6.2.2 不兼容的现象如果验证时不能正常获得蚂蚁集团系统的响应,并在您的系统中出现类似如下的错误信息,说明不兼容。"curl error 60: ssl certificate: unable to get local issuer certificate."或"curle_ssl_cacert (60) peer certificate cannot be authenticated with known ca certificates."6.2.3 修正方案使用操作系统信任根证书库的情况php 一般使用系统中所安装的 openssl 的信任根证书库,openssl 的信任根证书库根据操作系统版本的不同所在位置不同,可能的情况以及添加可信根ca证书的方法如下:操作系统类型信任根证书库位置添加可信根ca证书的方法linux/etc/ssl/certs/拷贝根ca的证书文件(digicertglobalrootg2.pem)到目录下linux/etc/pki/tls/certs/ca-bundle.crtcat digicertglobalrootg2.pem >> /etc/pki/tls/certs/ca-bundle.crtlinux/etc/ssl/certs/ca-bundle.crtcat digicertglobalrootg2.pem >> /etc/ssl/certs/ca-bundle.crtlinux/etc/pki/tls/certs/ca-bundle.trust.crtcat digicertglobalrootg2.pem >> /etc/pki/tls/certs/ca-bundle.trust.crtunix/system/library/openssl/拷贝根ca的证书文件(digicertglobalrootg2.pem)到目录下使用自主管理信任根证书库的情况php 代码中可能设定使用自主管理的根 ca 证书文件,典型代码如下:修复方法:将新服务器证书的根 ca 证书(digicertglobalrootg2.pem)添加到 rootca.pem。可用 cat 操作命令:6.3 .net.net 环境一般默认使用 windows 操作系统维护的受信任的根证书颁发机构,需要检查操作系统版本。6.3.1 不兼容的现象如果验证时不能正常获得蚂蚁集团系统的响应,并在您的系统中出现类似如下的错误信息,说明不兼容。the underlying connection was closed: could not establish trust relationship for the ssl/tls secure channel.```6.3.2 修正方案如果出现 ssl 相关异常,请您的系统管理员下载 根ca证书,并将其导入到受信任的根证书颁发机构区域。6.4 python6.4.1 综述当使用标准库的 http client(urllib、urllib2、http、httplib)时,python 自 2.7、3.4、3.5 版本起,默认校验服务器证书是否由可信签发机构签发、证书主题(或san)是否与服务器域名匹配,且使用 ssl 模块的信任根证书库,详情可查看 。早期的 python 版本默认既不校验服务器证书是否由可信签发机构签发,也不校验证书主题(或san)是否与服务器域名匹配,因此,不会遇到问题。6.4.2 不兼容的现象如果验证时不能正常获得蚂蚁集团系统的响应,并在您的系统中出现类似如下的错误信息,说明不兼容。ssl: certificate_verify_failed6.4.3 修正方案python 默认使用系统 ssl 模块(通常为openssl)的信任根证书库,也可以通过 cafile、capath、cadata 来指定。如果是使用系统 ssl 模块(openssl)的信任根证书库,可参考 6.3.2 修正方案 章节的介绍,往系统库中增加新的根 ca 证书 。如果使用的是自主管理的信任根证书库,往其中增加新的根ca证书 。可能的代码写法:参考文档: 7. 特别提醒●如果您的系统是用预置蚂蚁集团服务器证书的方式来与蚂蚁集团网站建立 https 连接,由于我们每年将至少更新一次证书密钥,为避免贵司业务受证书密钥更新的影响,强烈建议您改为 tls/ssl 协议中普遍使用的x509 证书链校验方式。●为了检验商家和开发者系统兼容新证书的准备情况,将在 2024 年 08 月 01 日 至 2024 年 08 月初的部分时间段将部分请求灰度到部署了新证书的服务器上。如果您的系统此时还不兼容新的服务器证书,可能会出现部分业务失败,通常情况下重试即可恢复业务。8. 联系凯发k8官方网娱乐官方蚂蚁凯发app官方网站的技术支持中心提供多种问题反馈和获取凯发app官方网站的技术支持的通道。如对本次升级有任何疑问、验证或修正过程遇到困难,请在文档页面右下角寻求支付宝开放平台凯发app官方网站的技术支持帮助。