1

以下を使用して、openssl Cで接続されたセッションのPEM証明書を取得しています。必要なのは、base64でエンコードされた証明書を取得することです。

if(this->ssl) {
  X509 *cert = SSL_get_certificate(this->ssl);
  EVP_PKEY *pubKey = X509_get_pubkey(cert);
  LOG_INFO("Public key is " << BN_bn2hex(pubKey->pkey.rsa->n));
}

これをどのように達成できるかについての情報があれば役立ちます。

4

1 に答える 1

1

DER でエンコードされた証明書を取得するには、 i2d_X509関数を使用する必要があります。次に、お気に入りの base64 エンコーダーを使用して、PEM にエンコードします。適切な方法が必要な場合は、 -----BEGIN CERTIFICATE----------END CERTIFICATE-----を追加することを忘れないでください。

ここでは、OpenSSL 自体でエンコードする方法の例を見つけることができます。OpenSSL を使用する場合、i2d_X509_bio関数を使用して DER でエンコードされたデータを直接 BIO に入れることで、物事を簡素化できます。

于 2012-10-16T13:00:00.733 に答える