char[] にサーバー証明書があります。これで、CA 証明書ファイルにもアクセスできるようになりました。char[] 変数にロードされた証明書を確認するにはどうすればよいですか。
助けてください
char[] にサーバー証明書があります。これで、CA 証明書ファイルにもアクセスできるようになりました。char[] 変数にロードされた証明書を確認するにはどうすればよいですか。
助けてください
この問題を解決しました。OpenSSL には、適切に文書化されていない関数が多数あります。次の openssl を使用して、証明書がメモリまたは char[] に読み込まれるときに証明書を検証する必要があります。
int X509_verify(X509*, EVP_PKEY*);
成功した場合は 1 を返し、検証が失敗した場合は 0 を返します。
X509* は証明書へのポインタです。
BIO *bio;
X509 *peer_cert;
bio = BIO_new(BIO_s_mem());
BIO_puts(bio, (const char*)peerCert_buf);
peer_cert = PEM_read_bio_X509(bio,NULL,NULL,NULL) ;
peerCert_buf は、証明書ファイルの内容を含む char[] です。
EVP_PKEY* は、証明書に存在する公開鍵へのポインターです。これを使用して、CA 証明書から公開鍵を抽出できます。
EVP_PKEY* key = X509_get_pubkey(ca);
ca は、CA 証明書を含む X509* です。
OpenSSLを使用して証明書ストアを使用して検証することに関するこのブログ投稿が、あなたが探しているものではないかどうかはわかりません。