首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS 11中安装自签名证书

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

Stack Overflow用户
提问于 2018-03-22 14:43:17
回答 3查看 13.9K关注 0票数 7

我一直在我的小办公室的内部网上使用自签名证书,在升级到iOS 11后,证书对我不起作用。(Chrome和其他浏览器对此很满意。)

我已经得到了我的自签名根ca文件,并将其转换为.der文件,然后通过web将其安装到我的iPad上。

但与此Answer不同的是,我在设置>常规>关于>证书信任设置中看不到我的根ca证书。

在iOS中信任证书有什么限制吗?我的iPhone和iPad都有这个问题。我的程序有什么问题吗?

我使用这些代码来制作我的ca证书。

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2018-09-26 22:38:23

如果您在“常规”->“关于”->“证书信任设置”下看不到证书,则可能没有安装根CA。非常重要--需要是根CA,而不是中间CA。

这很容易通过使用openssl来确定:

代码语言:javascript
复制
$ openssl s_client -showcerts -connect myserver.com:443 </dev/null

这将显示证书链中证书的输出,如下所示:

代码语言:javascript
复制
    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行!)。现在,您可以通过拖放到模拟器窗口来将其安装到模拟器上。

如果您的根CA没有列出,那么在输出中找到顶层,然后从Keychain Access.app中导出它。这假设您能够通过Safari/Chrome访问该网站,因此您必须首先手动信任该网站。

我的'openssl s_client‘输出以最后一个证书结束,证书的颁发者如下所示:

I:/C=US/O=mycompany.comInc./CN=mycompany.comInternal Root CA 1

我能够通过Safari/Chrome成功地访问目标网站,所以这意味着Keychain已经存储并信任它。所以,我通过Spotlight启动了Keychain Access.app,并在搜索栏中输入了"mycompany“。它显示了我的"mycompany.com内部根CA 1“的证书(Kind=certificate)。我只需右键单击并选择“导出”,然后将其保存为.cer文件。

瞧!现在我可以将它拖放到我的模拟器上,根CA将显示在General->About...下。我可以启用它。

如果出于某种原因,您需要将PEM文件转换为DER/CER,只需使用以下命令:

代码语言:javascript
复制
$ openssl x509 -in myfile.pem -out myfile.der -outform DER

希望这对我有帮助,我已经做了几十次了,我想是时候写下一些笔记了,这样我就不会一直忘记。

票数 3
EN

Stack Overflow用户

发布于 2018-04-25 23:09:45

显然ios不喜欢没有通用名称的证书,所以只要用非空的CN重新生成它,它就会出现在根证书列表中

票数 1
EN

Stack Overflow用户

发布于 2018-10-17 19:29:10

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

代码语言:javascript
复制
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

在我使用这个命令之前,我也遇到过同样的问题。我不知道为什么会发生这种情况,但是命令起作用了。干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49422164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档