Android SSL Pinning证书更新:新增SHA-256 Pin相关问题咨询
关于Android SSL Pinning证书更换的问题解答
1. 从证书文件生成SHA-256 Pin的方法
完全可以从证书文件生成对应的SHA-256 Pin,具体操作步骤如下:
- 若你的证书是PEM格式(
.pem/.crt),直接执行以下命令:openssl x509 -in your-cert.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 - 若证书是DER格式(
.cer),先转成PEM格式再执行上述命令:openssl x509 -inform der -in your-cert.cer -out your-cert.pem
命令执行后输出的Base64字符串就是你需要的SHA-256 Pin值。
2. 同时添加新旧SHA-256 Pin是否可避免服务器换证书后应用崩溃?
是的,这种方式能有效避免崩溃。
SSL Pinning的验证逻辑是:客户端会检查服务器返回的证书链中,是否存在任意一个与配置文件中Pin匹配的公钥哈希。当你在<pin-set>中同时保留旧证书Pin和新证书Pin时:
- 服务器未更换证书前,旧Pin会匹配,应用正常访问;
- 服务器完成证书更换后,新Pin会匹配,应用依然能正常连接;
- 待新证书全量部署、且所有用户均更新到包含新Pin的应用版本后,再移除旧Pin即可。
你可以按照以下格式修改配置文件(替换为实际的新旧Pin值):
<domain-config> <domain includeSubdomains="true">mywebsite.com</domain> <pin-set> <pin digest="SHA-256">旧证书的SHA-256 Pin值</pin> <pin digest="SHA-256">新证书的SHA-256 Pin值</pin> </pin-set> </domain-config>
内容的提问来源于stack exchange,提问作者lily
相关产品推荐
相关产品推荐

