(2020-01-17 13:07:26 отредактировано Binger)

Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Здравствуйте. Подскажите, пожалуйста, возможно ли проверить подпись сертификата и построить цепочку с использованием вышеуказанных инструментов программно, не через командную строку? Я изучал вопрос по OpenSSL и нашёл такие функции как X509_verify и X509_verify_cert, которые проверяют подпись сертификата и цепочку, но они требуют в первом случае публичный ключ вышестоящего сертификата, если только мы не имеем дело с самоподписанным - там публичный ключ самого сертификата, и во втором случае - весь набор сертификатов, которые входят в цепочку. Возможно ли реализовать проверку, не храня все сертификаты цепочки на компьютере или токене? И как можно проверить сертификат на отзыв? Спасибо.

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Здравствуйте!

Binger, как же вы хотите проверить надежность сертификата, если не будет проверена вся цепочка?
Ее придется как-то получить, чтобы передать X509_verify_cert.

Проверить вхождение сертификата в CRL можно так: X509_CRL_get0_by_cert.

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Павел Анфимов, здравствуйте. Я имел в виду, что нет ли возможности автоматически получать промежуточные сертификаты, как это реализовано в CryptoAPI? Нужно обязательно их хранить на пк или на токене? Другого варианта нет?

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Binger, нет. Промежуточные сертификаты можно загружать в память компьютера при проверке.

(2020-01-24 18:39:15 отредактировано Binger)

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Павел Анфимов, в OpenSSL программно есть возможность автоматически загружать сертификаты издателей? В сертификате же имеется URL, по которому можно получить сертификат издателя. Вопрос схож с предыдущим: я не совсем понял второе предложение вашего ответа. Спасибо.

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Binger, не во всех сертификатах указан URL издателя. Автоматической загрузки в OpenSSL нет.

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Павел Анфимов, а функции, которые позволяют получить сертификат издателя знаете какие-либо? Речь всё также про OpenSSL. Или же самому скачивать их и затем подгружать в хранилище?

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Binger, нужно самому загружать. Можно, например, передавать все Кросс-сертификаты аккредитованных УЦ - openssl сам цепочку будет пробовать строить.

(2020-01-27 11:24:59 отредактировано Binger)

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Павел Анфимов, Спасибо. Павел, подскажите ещё, пожалуйста, CRL тоже нужно загружать из файлов? OpenSSL по данным из сертификата не может подгружать CRL?

Re: Как проверить валидность сертификата с помощью PKCS11 или OpenSSL

Binger, верно! Вы можете сами попробовать распарсить сертификат, взять ссылку и загрузить в OpenSSL CRL самим.