Сохранить сертификат X509 в файл

#c #ssl #openssl #x509certificate #x509

#c #ssl #openssl #x509сертифицировать #x509

Вопрос:

Я работаю над HTTPS-клиентом, и мне удалось установить безопасное соединение и получить сертификат X509 с помощью:
X509 *cert = SSL_get_certificate(ssl); (ssl есть SSL *).

Как мне сохранить сертификат в файл? Кроме того, мне нужно получить поля «Subject DN» и «Issender DN» из сертификата.

Ответ №1:

Как мне сохранить сертификат в файл?

 #include <openssl/pem.h>
int PEM_write_X509(FILE *fp, X509 *x);
  

Кроме того, мне нужно получить поля «Subject DN» и «Issender DN» из сертификата.

 #include <openssl/x509.h>
X509_NAME *     X509_get_issuer_name(X509 *a);
X509_NAME *     X509_get_subject_name(X509 *a); 
  

Комментарии:

1. X509_NAME_oneline() полезно для преобразования X509_NAME структур в обычные текстовые строки.

Ответ №2:

Чтобы закодировать сертификат в файл, вы можете использовать эту функцию OpenSSL:

 int i2d_X509_fp(X509 *x, FILE *fp);
  

Он кодирует структуру X509, на которую указывает x , в файл, используя кодировку DER. Более подробная информация в справочнике OpenSSL API.

Комментарии:

1. Правильная форма int i2d_X509_fp(FILE *fp, X509 *x);