2020年11月6日金曜日

opensslでデフォルトの証明書を読み込む

SSL_CTX_set_default_verify_paths()を呼び出す。ただそれだけ。
いろんなサイトのサンプルで見かける  SSL_CTX_load_verify_locations() だけじゃダメだった。
SSL_CTX_load_verify_locations() は追加CA証明書を指定する用のAPI?
追加CA証明書をデフォルトのディレクトリに配置するなら、SSL_CTX_load_verify_locations()すらもいらなかった模様。
因みに  SSL_CTX_load_verify_locations() / SSL_CTX_set_default_verify_paths() どちらも呼び出さないと証明書の検証に失敗する。
このことから、openssl はデフォルトでは読み込まんのやね。
openssl verify コマンドがデフォルトの証明書を読み込まない動き。
恐らく引数の -CApath -CAfile を指定すると SSL_CTX_load_verify_locations() を呼び出すんだろうな。

関係ないけど openssl の中では X509_STORE はスタック出来るようになってるくさい。
つまり  SSL_CTX_load_verify_locations() は何度も呼ぶことが出来るのかなー?(未実験)
 
沼にハマった僕を救ってくれたのは postfix のコードでした。
postfixさん、ありがとう。 
 
でもなぁ...
curl のコード見てると、ssl_cafile, ssl_capath が指定されてない場合に、 SSL_CTX_set_default_verify_paths()を
呼び出すようになってんのよなぁ...
 https://github.com/curl/curl/blob/master/lib/vtls/openssl.c
つまり本来なら  SSL_CTX_load_verify_locations() だけでいいんとちゃうんかな...?
 
てか、openssl より nss(mozilla) とか GnuTLS とか wolfSSL の方が初心者に優しいのかなー?
 

0 件のコメント:

コメントを投稿