收藏
回答

加密请求消息中的敏感信息时,如何使用最新的平台证书?

获取平台证书列表 接口文档“https://wechatpay-api.gitbook.io/wechatpay-api-v3/jie-kou-wen-dang/ping-tai-zheng-shu”中,的注意事项部分有如下描述:

注意事项

如果自行实现验证平台签名逻辑的话,需要注意以下事项:

  • 程序实现定期更新平台证书的逻辑,不要硬编码验证应答消息签名的平台证书
  • 定期调用该接口,间隔时间小于12 小时
  • 加密请求消息中的敏感信息时,使用最新的平台证书(即:证书启用时间较晚的证书)

标红的部分,说加密请求消息中的敏感信息时,使用最新的平台证书(即:证书启用时间较晚的证书)

我在查看wechatpay-apache-httpclient源码的时候,发现CertificatesVerifier类中没有获取最新平台证书的接口,只有一个getValidCertificate 接口,代码如下:

  @Override
    public X509Certificate getValidCertificate()
    {
        for (X509Certificate x509Cert : certificates.values())
        {
            try
            {
                x509Cert.checkValidity();
                
                return x509Cert;
            }
            catch (CertificateExpiredException | CertificateNotYetValidException e)
            {
                continue;
            }
        }
        
        throw new NoSuchElementException("没有有效的微信支付平台证书");
    }


按照我理解,假设一个证书即将就要过期(临界点)了,如果用这个方法获取到的证书加密敏感数据,会不会造成微信支付解密失败?

开发者是否需要重新实现一个获取最新证书的方法,还是getValidCertificate 这个接口是安全的,只要证书是有效的,即使即将过期,微信支付解密也不会失败?

最后一次编辑于  2020-12-14
回答关注问题邀请回答
收藏

1 个回答

  • 支付社区运营
    支付社区运营
    2020-12-15

    您好,您的问题建议您前往微信支付APIV3文档, 点击右下角‘技术咨询’实时寻求技术帮助。若您的问题得到解决,请回社区晒出解决方案,以帮助更多遇到此问题的人,感谢您的支持~

    2020-12-15
    有用
    回复
登录 后发表内容
问题标签