Проблемы построения PKI с openssl

3

Я установил небольшую PKI, используя openssl ca, следуя руководству, которое объясняет процедуру и некоторые концепции в деталях. Я хочу выполнить в значительной степени ту трехуровневую настройку, которая описана в этой статье, а именно, что фактические сертификаты выдаются Промежуточным ЦС, который, в свою очередь, «управляется» корневым ЦС, причем корневой ЦС самоподписывается и в конечном итоге развернут на заинтересованных клиентов. Я попытался воспроизвести конфигурацию, описанную в статье, как можно ближе, чтобы предотвратить одновременную настройку слишком большого количества вещей, которые я пока не понимаю.

Пока у меня есть следующее:

  • Сертификат и «инфраструктура» для корневого центра сертификации.
  • Сертификат и «инфраструктура» для промежуточного ЦС.
  • CRL для обоих CA.
  • Тестовый сертификат, выданный промежуточным центром сертификации, чтобы проверить, все ли это работает.
  • Копии Demo CA для сравнения.

Теоретически, развернув сертификат корневого ЦС в браузере, а затем зайдя на сайт, защищенный этим последним сертификатом, я должен получить «значок замка». Это делает работу с Internet Explorer, Chrome и Firefox. Opera работает и выдает сообщение «Безопасное соединение: фатальная ошибка (1578)», поэтому что-то явно сломано.

Статья на форуме предполагает, что проблема кроется в CRL, поэтому я отправился туда исследовать. Internet Explorer не имеет проблем с открытием списков отзыва сертификатов и отображает их правильно, без какого-либо уведомления о том, что что-то не так. Firefox, с другой стороны, отказывается и выдает «Код ошибки ffffe00a», ​​который указывает на проблемы с подписью ( Error -8182: SEC_ERROR_BAD_SIGNATURE: Peer's certificate has an invalid signature.). Это, однако, происходит только тогда, когда я сначала импортировал сертификат CA. Если я этого не сделаю, то CRL принимается без проблем.

Я проверил все сертификаты и CRL с любыми вызовами обоих opensslи от Microsoft, certutil.exeчтобы я мог получить руку, и все это дает мне большие пальцы.

Размещая мои сертификаты рядом с демонстрационными сертификатами в вышеупомянутой статье, я не вижу разницы - кроме имен, конечно. Так что в теории они должны вести себя одинаково. Но попытка импортировать корневой сертификат Demo CA и затем просмотр CRL работает во всех браузерах, тогда как мой собственный Root CA приводит к этим странным ошибкам. (Не имея закрытых ключей Demo CA, я, конечно, не могу проверить, будут ли работать сертификаты, выданные Demo CA.)

Я в тупике. Кажется, мне не хватает чего-то тонкого, но важного, но у меня нет идей и ресурсов. Спасибо за любые предложения или указатели.

Вукар Тимнаракрул
источник

Ответы:

1

Если сертификат настроен правильно с точки зрения CA, возможно, веб-сервер или браузер неправильно строят цепочку.

Убедитесь, что на веб-сервере правильно установлены корневой и промежуточный сертификаты, и, в частности, на некоторых серверах (или балансировщиках нагрузки) необходимо «связать» цепочку с помощью специальной команды приложения.

В качестве альтернативы, знайте, что каждый браузер IE и Firefox (не уверен в Chrome) поддерживает свое собственное хранилище доверенных сертификатов CA. Вам нужно будет установить root и, возможно, thex CA в этот магазин.

Другим инструментом, который вы можете использовать для сравнения сертификатов, является инспектор ASN.1, доступный здесь ( http://www.lapo.it/asn1js/ )

goodguys_activate
источник
Кажется, веб-сервер правильно строит цепочку. Если я просто сверну локоть с моим корневым сертификатом , то это curl -vI https://www.aleturo.com/говорит о том, что SSL certificate verify ok.только Opera действует, но из того, что я прочитал, я понял, что Opera является наиболее строгой в отношении SSL, так что что-то еще не работает. Рассмотрение сертификатов с помощью парсера ASN.1 - это то, о чем я еще не думал, я посмотрю на это.
Vucar Timnärakrul
0

Оказывается, проблема была просто проблемой кеширования. Воссоздание всех ЦС и сертификатов с нуля (просто для безопасности) и, самое главное: очистка кеша всех браузеров сделала свое дело.

В некотором смысле, различные намеки на проблемы с CRL оказались основной причиной. Поскольку предполагается, что CRL должен быть кэширован (и особенно для корневого CA, имеет довольно длительный срок службы), он фактически был кэширован. Так как я пытался создать PKI, я несколько раз ломал и воссоздавал различные CA, CRL и еще много чего. Когда я проводил последние тесты, у браузеров были самые новые сертификаты CA, но они все еще пытались сопоставить их со старыми CRL, которые все еще находятся в кэше браузера (URL CRL не изменился). Конечно, они не совпадали, и Opera и Firefox - правильно - жаловались.

После очистки кэшей браузера и повторного развертывания корневого сертификата я наконец заметил в журналах веб-сервера, что Opera запрашивала CRL как для корневого, так и для промежуточного CA - что я не видел раньше (так как они все еще кэшировались). И с тех пор все было хорошо. Мне удалось установить Root CA, и никто больше не жалуется.

Теперь начинается настоящая работа ...

Вукар Тимнаракрул
источник