【証明書検証の無効化】
SSL_VERIFY_NONEをパラメータで指定し、OpenSSLのSSL_CTX_set_verify()を呼び出す。
SSL_VERIFY_NONEを指定した場合、OpenSSLの証明書検証結果を無視し、TLS/SSLハンドシェイクを継続する。
【証明書検証の有効化】
証明書検証を実行するための修正点を記載する。
1.証明書検証機能の有効化
SSL_CTX_set_verify()に指定するSSL_VERIFY_NONEをSSL_VERIFY_PEERに変更し、証明書検証機能を有効化する。
2.OpenSSLへの信頼された証明書の読み込み
SSL_CTX_load_verify_locations()を使用して、OpenSSLに信頼された証明書を読み込ませる。信頼された証明書の指定は、第2引数にPEMファイルのファイルパスを指定する。
3.証明書検証エラーのエラーマッピング
TLS通信エラーが発生した場合、証明書検証のエラーメッセージとERR_error_string()で取得した文字列比較をし、一致した場合、証明書検証のエラーとして、マッピングする。
■証明書検証のエラーメッセージ
「error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed」
TLS通信エラーが発生した場合、OpenSSLのエラーメッセージをERR_error_string()で取得することができる。
【参考】
IBMの開発者サイト:独自の信頼できる証明書の提供
https://www.ibm.com/developerworks/jp/linux/library/l-openssl2/index.html
OpenSSL公式サイト
https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_load_verify_locations.html
Windows上で、証明書や秘密鍵をPEM形式に変換してエクスポートする
https://www.atmarkit.co.jp/ait/articles/1602/05/news039.html
0 件のコメント:
コメントを投稿