はじめに
「SSL_get_verify_resultの戻り値は、どの数字なら証明書の検証に成功しているの?」
「0以外の値が返ってきたけれど、証明書の設定に問題があるの?」と迷っていませんか。
OpenSSLを使ってSSL/TLS通信を確認していると、SSL_get_verify_resultの結果として数値が表示されても、その数字が何を意味するのか分からず、エラーの原因を判断できないことがあります。
この記事では、SSL_get_verify_resultの役割や戻り値の意味、証明書の検証結果を確認する方法、エラーが返った場合の確認ポイントまで分かります。
SSL_get_verify_resultとは?

SSL_get_verify_resultは、SSL/TLS通信で行われた証明書検証の結果を取得する関数です。
ここでは、SSL_get_verify_resultで取得できる検証結果と、X509_V_OKを判断するときに確認すべき点を順に説明します。
SSL_get_verify_resultの役割と取得できる検証結果
SSL_get_verify_resultは、SSL/TLS接続で行われたX.509証明書の検証結果を確認するための関数です。
X509_V_OKが返れば検証エラーがないことを示し、それ以外の場合は証明書の期限切れや発行者を確認できないなど、エラーコードに応じて原因を確認します。
X509_V_OKが返っても検証成功とは限らない理由
X509_V_OKは、証明書の検証でエラーが検出されなかったことを示します。
ただし、接続先とのホスト名の一致など、SSL/TLS接続に必要な条件をすべて確認するものではないため、X509_V_OKだけで判断せず、必要な検証項目もあわせて確認しましょう。
SSL_get_verify_resultの戻り値を確認する方法
SSL_get_verify_resultの戻り値を確認すると、証明書の検証が成功したのか、何らかの検証エラーが発生したのかを判断できます。
ここでは、X509_V_OKが返る場合の意味から、エラーが返った場合や複数の問題がある場合に確認できる内容まで順に説明します。
X509_V_OKが返る場合の意味
X509_V_OKが返る場合は、証明書の検証でエラーが検出されなかったことを示します。
有効期限切れや発行者を確認できないといった問題も検出されていないため、まずは戻り値がX509_V_OKと一致するか確認しましょう。
X509_V_OK以外が返る場合の確認ポイント
X509_V_OK以外が返る場合は、エラーコードが示す内容を確認します。
単に「検証失敗」と判断するのではなく、証明書の有効期限や発行者など、コードに対応する原因を確認すると問題を特定しやすくなります。
複数の検証エラーがある場合に確認できる内容
複数の問題があっても、SSL_get_verify_resultから取得できる検証結果コードは1つです。
戻り値だけですべての問題を確認できないため、必要に応じて証明書チェーンや検証時のエラー情報も確認し、問題が発生している証明書を特定しましょう。
SSL_get_verify_resultを使うときの注意点
SSL_get_verify_resultの戻り値を確認するときは、返された値だけで証明書の状態を判断しないことが重要です。
ここでは、証明書未提示の場合の判断方法と、より詳しい検証エラーを確認する方法を順に説明します。
証明書未提示の場合に戻り値だけで判断しない
証明書が提示されていない場合は、SSL_get_verify_resultの戻り値だけで検証結果を判断しないようにします。
まずSSL_get_peer_certificateなどで証明書を取得できているか確認し、取得できない場合は証明書の検証結果とは分けて考えましょう。
証明書が正しく取得できているか確認したあと、検証結果そのものを詳しく確認したい場合は、OpenSSLで証明書を検証する方法も確認しておくと安心です。
▶OpenSSLでSSL証明書を確認する方法
より詳しい検証エラーを確認する方法
SSL_get_verify_resultでX509_V_OK以外が返された場合は、対応するエラーコードを確認します。
原因が分からない場合は、証明書チェーンや検証時のエラー情報も確認すると、どの証明書で問題が起きているのか特定しやすくなります。
証明書チェーンに問題がありそうな場合は、中間証明書やルート証明書が正しくつながっているかを確認してみましょう。
▶SSL証明書チェーンとは?確認方法とエラーの原因を解説
SSL_get_verify_resultの使い方
SSL_get_verify_resultを使うと、SSL/TLS通信で実行された証明書検証の結果を戻り値から確認できます。
ここでは、戻り値を判定する方法と、検証結果に応じてエラーを確認する方法を順に説明します。
SSL_get_verify_resultで戻り値を判定する方法
SSL_get_verify_resultの戻り値がX509_V_OKと一致するかを確認します。
X509_V_OKなら証明書検証でエラーは検出されておらず、それ以外の場合は返されたエラーコードの内容を確認しましょう。
検証結果に応じてエラーを確認する方法
X509_V_OK以外が返された場合は、エラーコードから有効期限や発行者など、問題がある項目を確認します。
原因を特定できない場合は、証明書チェーンやOpenSSLの検証エラー情報もあわせて確認すると分かりやすくなります。
自己署名証明書が原因で検証エラーが出ている場合は、証明書を信頼できない理由と安全な対処方法を確認しておくと解決しやすくなります。
▶certificate problem self-signed sslとは?原因と対処法を解説
まとめ
SSL_get_verify_resultを使うと、SSL/TLS通信で行われた証明書の検証結果を確認できます。
X509_V_OKが返っても接続全体の安全性が保証されるわけではないため、証明書の有無やホスト名、証明書チェーンもあわせて確認することが大切です。
まずは戻り値を確認し、エラーがある場合はコードの内容から原因を一つずつ確認していきましょう。











