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認証を設定する必要がある場合に使用します。