『需要提供私钥才能安装证书』的解决办法
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证书,然后该咋导入咋导入
第二种(不推荐)
把证书的签名哈希算法改成SHA1,SHA256证书(至少在我的手机上)是导不进去的
如果你用OpenSSL自签名的CA证书,那么在签发的时候加上-sha1
选项即可
sudo openssl req -new -x509 -key CA.key -out CA.crt -days 3650 -sha1
(全文完)
Android 12 导入p12证书时只支持sha1和3des,这可能是一个类似的问题
估计是某种上古遗留了....搞得我想自签名SHA256证书都很麻烦