説明
tls.Config{InsecureSkipVerify: true} は、標準のサーバー証明書チェーン・ホスト名検証を無効にします。正しい代替の検証がなければ、接続先サーバーの身元を確認できません。
想定される影響
- 通信経路上の攻撃者が無効な証明書で接続を傍受するおそれがあります。
- 機密のリクエストや応答が漏えい・改ざんされる可能性があります。
対処方法
- 標準の証明書検証を維持し、信頼するCAとサーバー証明書を正しく設定してください。
- 接続先に合う
ServerNameを使ってください。独自の検証が必要なら、VerifyConnectionなどで信頼性と接続先の身元を正しく検証してください。 - mTLSのクライアント認証は、サーバー証明書の検証を代替しません。テスト専用の検証例外を本番コードに残さないでください。
例
TLSクライアント設定の抜粋です。接続コードで正しい宛先ホスト名と信頼するルート証明書を指定する必要があります。最低TLSバージョンの設定だけでは、サーバーの身元を確認できません。
変更前
go
cfg := &tls.Config{InsecureSkipVerify: true}
変更後
go
cfg := &tls.Config{MinVersion: tls.VersionTLS12}
解説:
- 変更前:
InsecureSkipVerify: trueによって標準のサーバー証明書チェーン・ホスト名検証が無効になります。 - 変更後:
InsecureSkipVerifyを既定のfalseのままにし、最低TLSバージョンを指定します。正しいホスト名と信頼設定を持つ接続で、標準の証明書検証を使います。