ホームページ > バックエンド開発 > Golang > 自己署名証明書を使用すると TLS 接続が失敗するのはなぜですか?それを修正するにはどうすればよいですか?

自己署名証明書を使用すると TLS 接続が失敗するのはなぜですか?それを修正するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-19 15:58:17
オリジナル
753 人が閲覧しました

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

自己署名証明書を使用した TLS 接続のトラブルシューティング

問題: 自己署名サーバーを使用した TLS 接続の確立証明書が不明な証明書を示すエラーで失敗する権限。

関連コード:
クライアント:

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}
ログイン後にコピー

サーバー:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}
ログイン後にコピー

エラーメッセージ:

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")
ログイン後にコピー

根本原因:
生成された自己署名証明書には IsCA フラグが設定されておらず、中間証明書またはルート証明書ではないことを示しています。その結果、クライアントの CA プールは自己署名証明書を有効な認証局として検証できません。

解決策:
この問題を修正するには、IsCA フラグが有効であることを確認してください。 x509.CreateCertificate を使用して自己署名証明書を生成するときに設定されます。証明書生成の正しいコードは次のとおりです。

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}
ログイン後にコピー

IsCA:true を設定すると、自己署名証明書が認証局として適切に機能し、クライアントがその信頼性を検証できるようになります。

以上が自己署名証明書を使用すると TLS 接続が失敗するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート