皆さん、私は SSL について何か書こうとしていますが、ここに質問があります。
私は以下のものを構築しました:
- CA 証明書 (自作の CA)
- Server pfx、Server cert、Server key (自作CAで「localhost」に署名)
現在、.Net SslStream を使用して接続をテストしています:(クライアントとサーバーは別のスレッドにあり、TCP 接続は既に構築されています)
クライアント:
sslStream.AuthenticateAsClient("localhost");
サーバ:
sslStream.AuthenticateAsServer(serverCert);
//serverCert is X509Certificate2 built from "server.pfx"
クライアントの AuthenticateAsClient メソッドは例外をスローします
「検証手順によると、リモート証明書は無効です。」
その理由は、サーバーの証明書が信頼されていない CA によって署名されているため、認証が失敗したためだと思います。CA 証明書を信頼リストに追加するにはどうすればよいですか?
クライアントコードに以下のコードを追加しようとしましたが、うまくいきません
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(new X509Certificate2(Resources.CACertPath));
store.Close();
sslStream.AuthenticateAsClient("localhost");