やりたいこと
オレオレ証明書として発行したサーバ証明書を配置したシステムに対してcurlで疎通確認を行う。
尚、同通信において同証明書をルート証明書として利用する。
環境情報
- curl 7.29.0
- RHEL 7
やり方
以下のような自己証明書があったとした場合は
$ openssl x509 -text -noout -in test.crt Certificate: ... Issuer: CN = test.com Validity ... Subject: CN = test.com ...
cacert
オプションでファイルを指定することで
# curl https://test.com -v --cacert test.crt
接続ができる。
* About to connect() to test.com port 443 (#0) * Trying 10.X.X.X... * Connected to test.com (10.X.X.X...) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: tls.crt CApath: none * SSL connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: * subject: CN=test.com ... * issuer: CN=test.com > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: test.com > Accept: */* ...
同ファイルを指定しない場合はデフォルト情報がCAfileとして読み込まれて
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
証明書エラーとなる。
* NSS error -8172 (SEC_ERROR_UNTRUSTED_ISSUER) * Peer's certificate issuer has been marked as not trusted by the user. * Closing connection 0 curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
以下、補足です。
補足
以下の記事でも取り上げたオレオレ証明書を利用する場合は
クライアント側に同証明書をCAfileとして取り込んでもらう必要があります。
以上です。