Если вы не видите сертификат в разделе «Общие» -> «О программе» -> «Настройки доверия сертификатов», возможно, у вас не установлен корневой ЦС. Очень важно - должен быть КОРНЕВОЙ ЦС, а не промежуточный ЦС.
Это очень легко определить с помощью 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-----
И он должен показать цепочку сертификатов вплоть до ROOT CA. Продолжайте следить за выводом, обращая внимание на значение «i:», которое указывает ISSUER. Наконец, вы должны добраться до ROOT 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 Внутренний корневой центр сертификации 1
Я могу успешно попасть на целевой веб-сайт через Safari/Chrome, так что это означает, что Keychain сохранил его и доверяет ему. Итак, я только что запустил Keychain Access.app через Spotlight и набрал «mycompany» в строке поиска. Он показал мой сертификат (вид = сертификат) для «mycompany.com Internal Root CA 1». Я просто щелкнул правой кнопкой мыши и выбрал «Экспорт» и сохранил его в файле .cer.
Вуаля! Теперь я могу перетащить его на свой симулятор, и ROOT CA появится в разделе General-> About..., и я могу включить его.
Если по какой-то причине вам нужно преобразовать файл PEM в DER/CER, просто используйте эту команду:
$ openssl x509 -in myfile.pem -out myfile.der -outform DER
Надеюсь, это поможет, мне приходилось делать это десятки раз, и я решил, что пришло время записать несколько заметок, чтобы я не забыл.
person
DustinB
schedule
26.09.2018