OpenSSL APIを試してみた
以下のdeveloperworks記事を参考にOpenSSL APIを試してみた。
今回は"SSL_CTX_load_verify_locations"(証明書の検証)に関する部分のメモ
Verisignのサイトで試してみた。
以下のコードに、エクスポートした各階層の証明書を入力して、
/* Load the trust store */ int ret = SSL_CTX_load_verify_locations(*pctx,"エクスポートした証明書", NULL);
返ってくる結果を確認する。
/* Check the certificate */ long RET = SSL_get_verify_result(ssl); fprintf(stderr, "[DEBUG]verify return: %ld\n", RET); fprintf(stderr, "[DEBUG]reason: %s\n", X509_verify_cert_error_string(RET));
- Case 1 "wwwverisigncom.crt"を指定
[DEBUG]verify return: 20
[DEBUG]reason: unable to get local issuer certificate
→信頼できるルート証明書がない?
- Case 2 "SymantecClass3ExtendedValidationSHA256SSLCA.crt"を指定
[DEBUG]verify return: 2
[DEBUG]reason: unable to get issuer certificate
→証明書の発行者が取得できない?証明書chainの検証でつまづいた?
- Case 3 "VeriSignUniversalRootCertificationAuthority.crt"を指定
[DEBUG]verify return: 0
[DEBUG]reason: ok
→証明書chainは妥当だし、信頼できるルート証明書
以下をチェックしている
- ルートCA証明書が信頼できるか
- 証明書chainが正しいか