2016-08-02 11 views
0

Я хочу прочитать сертификат сервера в формате DER и сохранить его в нашей БД, я нашел api для печати сертификата с использованием структуры X509, но я не вижу никакого API, чтобы получить его как строку. можете ли кто-нибудь указать API или любой пример на чтение сертификата?Как прочитать сертификат сервера в формате DER с помощью API openssl?

+1

Вы говорите, что 'd2i_X509' * не делает то, что вы хотите? Или вы просто пытаетесь прочитать его с DER и xlat на текст (который, кажется, у вас уже есть). Наконец, что не так, просто сохранив его в вашей БД в формате DER в виде капли? – WhozCraig

+0

@WhozCraig, я попытался использовать i2d_X509() для преобразования и печати сертификата в DER, это печать нежелательных символов. i2d_X509 (cert, &der); printf ("% s \ n", der); OPENSSL_free (der); – userF

+0

*** 'i' *** в' i2d' является внутренним, а *** 'd' ** * в 'i2d' является ASN.1/DER. ASN.1/DER является двоичным, он не доступен для печати ascii, а не для печати нежелательной, а скорее для предоставления вам ASN.1/DER, который вы просили. Вы * не можете * напечатайте его с помощью 'printf ("% s \ n ", der)', потому что его * не * строка. Вы * читаете * закодированный ASN.1/DER сертификат с 'd2i_X509'. Наконец, если вы предоставите код с вашим вопросом и проблема, тогда мы, вероятно, могли бы помочь вам лучше. – jww

ответ

0

Насколько я знаю, у вас есть два варианта хранения сертификата. Первый способ: введите тип столбца DB в BLOB, а затем сохраните данные двоичного сертификата.

Второй способ: сделать свой тип столбца БД ТЕКСТом, закодировать данные сертификата с помощью Base64, а затем сохранить закодированную строку. Когда вам нужно использовать сертификат, Base64 декодирует его обратно в ASN.1/DER.