Я установил небольшую 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.)
Я в тупике. Кажется, мне не хватает чего-то тонкого, но важного, но у меня нет идей и ресурсов. Спасибо за любые предложения или указатели.