Я тестирую сценарий, в котором у меня есть самозаверяющий сертификат, который будет единственным для корневого центра сертификации — еще один сертификат для промежуточного центра сертификации, подписанный корневым центром сертификации, а затем сертификат сервера, подписанный промежуточным центром сертификации.
Я создал простое приложение POC (C#), которое создаст TCP-сервер и TCP-клиент, я добавил все сертификаты в правильные хранилища: корневой в доверенное, промежуточный в промежуточный, а затем серверный в личное.
Сертификаты выглядят нормально. , если я выберу в личной папке именованный сертификат сервера, я увижу, что цепочка правильно выстроена до корня.
TCP-сервер будет использовать сертификат сервера в метод AuthenticateAsServer, затем в клиенте у меня есть метод обратного вызова для проверки сертификата сервера, и именно здесь у меня начинаются проблемы...
Я уже протестировал 3 сценария, все с «разными», но схожими результатами:
- Как есть, метод, проверяющий сертификат, возвращает только один статус в свойстве статуса цепочки, " Статус отзыва неизвестен".
- Если я создам список отзыва и добавлю его в магазин, промежуточный\список отзыва сертификатов статус цепочки возвращает 3 статуса: один говорит о том, что сертификат отозван (поэтому он использует список, установленный в хранилище), другой с «Статус отзыва неизвестен» и третий, связанный с CRL Offline
Если я использую простую конечную точку (http://localhost/something.crl), которая возвращает список отзыва (файл CRL), и добавляю эту информацию в расширения x509 промежуточного сертификата, он возвращает 2 статуса: один с «Статус отзыва неизвестен», а другой со статусом офлайн (конечная точка работает, и я удалил список из хранилища).
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/791 ... us-unknown
Мобильная версия