#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);