如果您在“通用-关于本机-证书信任设置”下没有看到证书,则可能没有安装根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
希望这能帮到你,我已经做了很多次这样的事情,觉得是时候记录一些笔记了,这样我就不会再忘记了。