curlのSSL/TLS設定

curlでSSL/TLSを設定する方法を解説。証明書検証、クライアント証明書、最低TLSバージョン、暗号スイート、証明書ピンニングの各オプションを学びましょう。

curl

詳細な説明

curlのSSL/TLS設定

curlは安全なHTTPS接続のための広範なSSL/TLS設定をサポートしています。これらのオプションを理解することは、証明書関連の問題のデバッグとセキュリティポリシーの適用に不可欠です。

証明書検証のスキップ

開発やテストの目的でのみ、-k を使ってSSL検証をスキップできます:

curl -k https://self-signed.example.com/api

警告: 本番環境では絶対に -k を使わないでください。すべての証明書チェックが無効化され、中間者攻撃に対して脆弱になります。

カスタムCA バンドル

カスタムの認証局バンドルを指定します:

curl --cacert /path/to/ca-bundle.crt https://api.example.com/data

またはCA証明書のディレクトリを指定します:

curl --capath /path/to/certs/ https://api.example.com/data

クライアント証明書認証(mTLS)

相互TLSでは、クライアントが証明書を提示する必要があります:

curl --cert client.crt --key client.key https://api.example.com/secure

パスフレーズで保護された鍵の場合:

curl --cert client.crt --key client.key --pass "mypassphrase" \
  https://api.example.com/secure

結合PEMファイル:

curl --cert client.pem https://api.example.com/secure

TLSバージョンの強制

最低TLSバージョンを強制します:

curl --tlsv1.2 https://api.example.com/data   # TLS 1.2以上
curl --tlsv1.3 https://api.example.com/data   # TLS 1.3のみ

証明書情報の確認

curl -vI https://example.com 2>&1 | grep -A 6 "Server certificate"

証明書の有効期限確認

curl -vI https://example.com 2>&1 | grep "expire date"

証明書のピンニング

特定の公開鍵ハッシュをピン留めします:

curl --pinnedpubkey "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=" \
  https://api.example.com/data

よくあるSSLエラーと修正方法

エラー 原因 修正方法
SSL certificate problem: unable to get local issuer certificate CAバンドルが見つからない --cacert を使用する
SSL certificate problem: certificate has expired 証明書の期限切れ サーバー証明書を更新する
SSL peer certificate or SSH remote key was not OK ホスト名の不一致 証明書のSANを確認する
TLS handshake failure TLSバージョンの不一致 --tlsv1.2 を試す

SSL/TLSオプションの理解は、HTTPSの問題をデバッグし、本番環境で安全なAPI通信を実装するために不可欠です。

ユースケース

セキュリティエンジニアがSSL証明書の設定を検証し、最低TLSバージョンを適用し、APIエンドポイントに相互TLS認証を設定する必要がある場合に使用します。

Try It — Curl to Code Converter

フルツールを開く