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 и certutil.exe Microsoft, на которые я мог бы положиться , и все это дало мне большие пальцы.

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

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

2 ответа2

1

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .