如何在Android中配置备份证书公钥钉扎并从CSR提取Pin
公钥钉扎中备份Pin的配置方案
你手里的CSR文件完全可以提取出备份Pin,问题出在你用的工具不对——get_pin_from_certificate.py只处理已签发的证书,没法解析CSR。下面是具体操作步骤:
从CSR提取公钥Pin的流程
- 导出CSR中的SubjectPublicKeyInfo
用OpenSSL命令从CSR里提取公钥的DER格式文件(这就是生成Pin需要的核心数据):openssl req -in 你的新CSR文件.csr -pubkey -noout | openssl pkey -pubin -outform der > spki.der - 计算SHA256格式的Pin值
对导出的spki.der文件计算SHA256哈希并做Base64编码,得到的就是备份Pin:openssl dgst -sha256 -binary spki.der | openssl base64
关键注意点
- 你代码里的
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=是无效占位符,必须替换成从CSR提取的真实备份Pin,否则证书更换后客户端会直接验证失败。 - CSR的核心就是包含了未来新证书要使用的公钥,只要服务器后续用这个CSR签发证书,提取的Pin就完全有效。
- 配置完成后建议做测试:临时把服务器证书换成对应CSR签发的新证书,验证客户端是否能正常建立连接,确保备份Pin生效。
内容的提问来源于stack exchange,提问作者Housefly
相关产品推荐
相关产品推荐

