Я установил небольшую 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.)
Я в тупике. Кажется, мне не хватает чего-то тонкого, но важного, но у меня нет идей и ресурсов. Спасибо за любые предложения или указатели.
curl -vI https://www.aleturo.com/
говорит о том, чтоSSL certificate verify ok.
только Opera действует, но из того, что я прочитал, я понял, что Opera является наиболее строгой в отношении SSL, так что что-то еще не работает. Рассмотрение сертификатов с помощью парсера ASN.1 - это то, о чем я еще не думал, я посмотрю на это.Оказывается, проблема была просто проблемой кеширования. Воссоздание всех ЦС и сертификатов с нуля (просто для безопасности) и, самое главное: очистка кеша всех браузеров сделала свое дело.
В некотором смысле, различные намеки на проблемы с CRL оказались основной причиной. Поскольку предполагается, что CRL должен быть кэширован (и особенно для корневого CA, имеет довольно длительный срок службы), он фактически был кэширован. Так как я пытался создать PKI, я несколько раз ломал и воссоздавал различные CA, CRL и еще много чего. Когда я проводил последние тесты, у браузеров были самые новые сертификаты CA, но они все еще пытались сопоставить их со старыми CRL, которые все еще находятся в кэше браузера (URL CRL не изменился). Конечно, они не совпадали, и Opera и Firefox - правильно - жаловались.
После очистки кэшей браузера и повторного развертывания корневого сертификата я наконец заметил в журналах веб-сервера, что Opera запрашивала CRL как для корневого, так и для промежуточного CA - что я не видел раньше (так как они все еще кэшировались). И с тех пор все было хорошо. Мне удалось установить Root CA, и никто больше не жалуется.
Теперь начинается настоящая работа ...
источник