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