如何在iOS 11中安装自签名证书

7

我一直在办公室的内部网络中使用自签名证书,在升级到iOS 11之后,这些证书对我不起作用。(Chrome和其他浏览器可以正常使用。)

我得到了我的自签名根证书文件,并将其转换为.der文件,通过Web安装到了我的iPad上。

ipad with cert

但是,与这个答案不同,我无法在“设置”>“通用”>“关于本机”>“证书信任设置”中看到我的根CA证书。

no cert??

iOS是否有任何限制以便信任证书?我的iPhone和iPad都有这个问题。我的程序有什么问题吗?

我使用以下代码制作了我的CA证书。

openssl genrsa -des3 -out rootCA.key 4096

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt

openssl x509 -in rootCA.crt -out cert.der -outform DER
3个回答

3
如果您在“通用-关于本机-证书信任设置”下没有看到证书,则可能没有安装根CA。非常重要--必须是根CA,而不是中间CA。
使用openssl很容易确定:
$ openssl s_client -showcerts -connect myserver.com:443 </dev/null

这将展示证书链中的证书输出,类似于以下内容:
    Certificate chain
     0 s:/C=US/ST=California/L=SAN FRANCISCO/O=mycompany.com, inc./OU=InfraSec/CN=myserver.com
       i:/C=US/O=mycompany.com, inc./CN=mycompany.com Internal CA 1A
    -----BEGIN CERTIFICATE-----
    ....encoded cert in PEM format....
    -----END CERTIFICATE-----

并且它应该显示一系列证书直到根CA。继续跟踪输出,注意“i:”值,它表示发行人。最后,您应该到达根CA,并可以将其复制粘贴到.pem文件中(请确保包括BEGIN CERTIFICATE和END CERTIFICATE行!)。现在,您将能够通过将其拖放到模拟器窗口上来安装它。
如果您的ROOT CA未列出,请找到输出中的顶级,然后从Keychain Access.app导出它。这假定您能够通过Safari / Chrome访问网站,因此您必须先手动信任该网站。
我的'openssl s_client'输出以类似于下面这样的发行方显示的最后一个证书结束:
i:/ C = US / O = mycompany.com, inc. / CN = mycompany.com Internal Root CA 1
我能够通过Safari / Chrome成功访问目标网站,这意味着Keychain已将其存储并信任它。因此,我只需通过Spotlight启动Keychain Access.app并在搜索栏中键入“mycompany”。它显示了我的证书(类型=证书)“mycompany.com Internal Root CA 1”。我只需右键单击并选择“导出”,然后将其保存为.cer文件。
哇!现在,我可以将其拖放到模拟器上,然后在“常规-关于...”下显示ROOT CA,并可以启用它。
如果出于某种原因您需要将PEM文件转换为DER / CER,请使用此命令:
$ openssl x509 -in myfile.pem -out myfile.der -outform DER

希望这能帮到你,我已经做了很多次这样的事情,觉得是时候记录一些笔记了,这样我就不会再忘记了。

1
显然,iOS 不喜欢没有公共名称的证书,因此只需使用非空 CN 重新生成它,它就会出现在根证书列表中。

我和 OP 有相同的问题,即使在证书中包含所有参数也无法显示。 - David Corbin

0

只需使用以下命令,然后通过空投或电子邮件将证书发送给自己。 确保在看到提示时回答所有问题。

openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer

我之前也遇到了同样的问题,直到我使用了这个命令。我不知道为什么会出现这种情况,但是这个命令确实有效。 祝好!


pfx/pcks12文件包含私钥和证书。我认为您真的不想将CA的私钥放入设备中。如果使用PEM或DER格式,则应该可以正常工作,如果不能,则首先创建CA时存在问题。 - adam
这个命令适用于需要MITM代理进行网络调试的情况。我不会将该命令用于其他任何事情。“如果他们没有,那么你在创建CA时出了问题”与自签名CA有关。 - Andrew Shatnyy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接