Как уже упоминалось, вы можете использовать openssl verify
.Согласно документации , он также проверяет период действия.
Программно это может означать часы поиска довольно плохой (или отсутствующей) документации, чтения примеров кода по всей сети ивероятно, головная боль.
Чтобы правильно проверить сертификат, вам необходимо сообщить все промежуточные сертификаты.Обычно вы также сообщаете список отзыва (CRL), но это не обязательно.
Итак, вот что вам нужно сделать с точки зрения кода (OpenSSL):
X509_STORE_new
- создать хранилище сертификатов; X509_STORE_CTX_new
- создать контекст хранилища; X509_STORE_add_cert
- добавить сертификат (ы) CA (и всех промежуточных) в список доверенныххранилище сертификатов (примечание: есть функция для поиска / загрузки списка); X509_STORE_add_crl
- добавление отозванных сертификатов в CRL хранилища сертификатов (примечание: то же, что и выше); X509_STORE_CTX_init
- Инициализировать контекст вашего хранилища, информируя ваше хранилище сертификатов; X509_STORE_CTX_set_purpose
- Определите цель, если вам это необходимо; X509_STORE_CTX_set_cert
- Сообщите контексту, какой сертификат вы 'Вы собираетесь проверить; X509_verify_cert
- Наконец, проверьте его; X509_STORE_CTX_cleanup
- Если вы хотите повторно использовать контекст для проверки другого сертификата, вы очищаете его и переходите к(5); - И последнее, но не менее важное: освободить (1) и (2);
Альтернативадостаточно быстрой проверки с помощью X509_verify
.Однако следует помнить, что он сравнивает только сигнатуры.
Когда мне это было нужно, у меня ушел день на поиск, чтение и тестирование.Затем я понял, что все, что мне было нужно, прямо в исходном коде OpenSSL.Итак, если вам нужен пример, перейдите прямо к openssl-xxx / apps / verify.c .
ВАЖНО: НИКОГДА не используйте MD5.Чтобы понять причину, прочитайте Создание мошеннического сертификата CA .