他のサーバー (Gmail など) との SSL POP 接続を確立するために、OpenSSL ライブラリを使用してプログラムを作成しています。このために、OpenSSL を使用して自己署名証明書を生成し、検証しました。
./openssl verify -CAfile /home/melluru/openssl/ssl/certs/cert.pem
/home/melluru/openssl/ssl/certs/cert.pem
>/home/melluru/openssl/ssl/certs/cert.pem: OK
OpenSSL ツールの検証オプションで「OK」の結果が得られます。しかし、プログラムで以下を使用して証明書をロードし、結果を確認すると、エラーが発生します
/** to add the cert file**/
if(!(SSL_CTX_use_certificate_file(ctx,"/home/melluru/openssl/ssl/certs/cert.pem",
SSL_FILETYPE_PEM)))
printf("Cant read certificate file\n");
/** to add the private key ***/
if(!(SSL_CTX_use_PrivateKey_file(ctx,"/home/melluru/openssl/ssl/certs/cert.pem",
SSL_FILETYPE_PEM)))
printf("Cant read keyfile\n");
/** to cadd the trusted cert **/
if(SSL_CTX_load_verify_locations(ctx,"/home/melluru/openssl/ssl/certs/cert.pem",
NULL) != 1) {
printf("loading trust certificate failed\n");
SSL_CTX_free(ctx);
return 0;
}
/*** BIO code to connect to gmail server *****/
printf("ssl verify error is %d\n",SSL_get_verify_result(ssl));
エラー 20 が表示されますX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
。
誰でも助けることができますか?まだ追加する必要があるものはありますか?