『需要提供私钥才能安装证书』的解决办法

warning: 这篇文章距离上次修改已过100天,其中的内容可能已经有所变动。

如图所示


有时候想用到一些自签名CA证书,但总是无法导入

可能是MIUI的问题,也有可能是Android 13的问题,笔者没有深究

总之,解决办法是有两种,都需要从私钥重新签发一次
因为安全性的原因,笔者推荐第一种方法

点击此处,展开目录

第一种

安卓似乎从某个版本,CA证书得是X509 V3的,执行如下命令查看你的证书版本号

openssl x509 -in CA.crt -noout -text

注意观察刚开始输出的Version:字段,如果是3,那就是V3证书,如果是1.....就是v1证书

笔者解决的办法是,重新从私钥签发一次V3证书

假设你已经有私钥了

首先,需要创建一个v3.ext文件,写入如下内容

basicConstraints = critical,CA:TRUE
keyUsage = critical, keyCertSign, cRLSign
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer

不要问笔者这都是啥意思,这是ChatGPT说的(

然后,执行以下命令生成CSR

openssl req -new -key YOUR_CA_PRI_KEY.key -out ca.csr -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=YourCommonName"

然后自签名,记得带上v3.ext文件

openssl x509 -req -days 3650 -in ca.csr -signkey YOUR_CA_PRI_KEY.key -out CA.crt -extfile v3.ext

这样签发出来的CA证书就是v3证书,然后该咋导入咋导入

第二种(不推荐)

把证书的签名哈希算法改成SHA1SHA256证书(至少在我的手机上)是导不进去的

如果你用OpenSSL自签名的CA证书,那么在签发的时候加上-sha1选项即可

sudo openssl req -new -x509 -key CA.key -out CA.crt -days 3650 -sha1

(全文完)

none
最后修改于:2024年08月13日 15:29

已有 2 条评论

  1. 游客 游客

    Android 12 导入p12证书时只支持sha1和3des,这可能是一个类似的问题

    1. 墨枫梧桐 墨枫梧桐

      估计是某种上古遗留了....搞得我想自签名SHA256证书都很麻烦

添加新评论