我正在尝试创建Android 4.3将识别的证书文件,以便访问具有自签名证书的网站,而无需单击警告页面。我认为我目前的问题是将证书转换为Android将识别的正确格式。
首先,我读过“Android只能理解* .p12文件格式的用户证书”。假设服务器上的server.crt文件是这个引用的证书是否正确? server.crt中的第一行读取
-----BEGIN CERTIFICATE-----
我一直在尝试遵循this question答案中给出的程序。我注意到的第一件事是:
Convert a DER file (.crt .cer .der) to PEM
这是否意味着所有这些扩展都是DER文件?当我尝试使用后面的命令时,我收到此错误:
$openssl x509 -inform der -in server.crt -out ~/server.pem
unable to load certificate
140735083343132:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
140735083343132:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509
第二个问题是在我找到的有关如何获得p12格式证书的示例中。似乎总是提到私钥,但我认为这不适合导出自签名证书,是吗?
例如,
Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)
它提供命令:
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
但是我没有CACert.crt(因为server.crt是自签名的?),我唯一的.crt文件是server.crt。另外,由于我需要将crt而不是pem转换为p12,我想尝试将前一个命令的输入部分与后者的输出部分组合起来。但前者使用“x509”命令而后者使用“pkcs12”,那么我应该使用哪一个?
更新
openssl pkcs12 -export -inkey server.key -in server.crt -out ~/server.p12
似乎工作,我能够将证书导入Android(它甚至声称它安装在一个toaste消息中),但之后它仍然没有显示在用户证书列表中,并试图访问该网站凭证仍然会导致“网站的安全证书不受信任!”消息我必须点击。