You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已上线Android应用SSL证书更新及Retrofit适配相关问题咨询

Retrofit Android 应用SSL证书相关问题解答

一、已投入使用的应用如何更新SSL证书

根据你应用之前的SSL校验配置不同,更新方式分为两类:

  • 未配置证书绑定(使用系统默认CA信任链)
    无需修改任何客户端代码,仅需要在服务端部署由受信任CA机构签发的新SSL证书即可,终端用户无感知,Retrofit默认会信任由正规CA签发的有效证书。
  • 已配置证书绑定(含公钥绑定、证书文件绑定、自签名证书信任)
    分两种处理方案:
    • 提前预埋方案:每次发版时提前在代码中预埋未来要更换的新证书公钥哈希/证书文件,比如使用OkHttp的CertificatePinner时同时保留新旧证书的哈希值,等服务端完成新证书切换后,再在后续版本中逐步移除旧证书的配置即可,用户无需紧急升级。
    • 紧急更新方案:如果未提前预埋新证书信息,需要立即修改客户端中的证书绑定配置,替换为新证书的相关信息,重新打包发版后引导用户升级,否则旧版本应用在服务端切换证书后会直接报SSL校验失败,无法正常请求接口。
      参考更新配置代码示例:
    // 证书公钥绑定更新示例
    val certificatePinner = CertificatePinner.Builder()
        .add("你的业务域名", "sha256/旧证书公钥哈希") // 过渡期保留旧证书配置
        .add("你的业务域名", "sha256/新证书公钥哈希") // 新增新证书配置
        .build()
    // 配置到OkHttp后传给Retrofit即可
    val okHttpClient = OkHttpClient.Builder()
        .certificatePinner(certificatePinner)
        .build()
    val retrofit = Retrofit.Builder()
        .baseUrl("你的接口根地址")
        .client(okHttpClient)
        .build()
    

二、是否每次SSL证书到期都需要执行更新操作

不一定,需要结合你的配置判断:

  • 未配置证书绑定的场景:只要服务端每次更换的是正规CA签发的有效证书,客户端不需要做任何更新操作,也不需要修改代码发版。
  • 已配置证书绑定的场景:
    • 如果绑定的是根CA/中间CA的公钥:只要新的域名证书是同一个CA机构签发,公钥没有变更,就不需要更新客户端配置,到期仅需要服务端换证书即可。
    • 如果绑定的是单张域名证书的公钥/文件,或者用的是自签名证书:每次证书到期更换新证书时,都需要按上面的更新流程提前预埋新证书信息、发版更新客户端,否则会出现SSL校验错误。

内容的提问来源于stack exchange,提问作者Karthik Ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:45:08