C#.NET SSL 接続は、IE (ツール/インターネット オプション/コンテンツ/証明書) で証明書を手動でインポートすると機能しますが、コードで証明書を読み込むにはどうすればよいですか? これが私のコードです:
TcpClient client = new TcpClient(ConfigManager.SSLSwitchIP, Convert.ToInt32(ConfigManager.SSLSwitchPort));
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null
);
sslStream.AuthenticateAsClient("Test");
Internet Explorer で証明書ファイルを手動でインポートすると、上記のコードは正常に機能します。しかし、IE から証明書を削除し、代わりに次のコードを使用すると、認証例外が発生します。
sslStream.AuthenticateAsClient("Test", GetX509CertificateCollection(), SslProtocols.Default, false);
ここに「GetX509CertificateCollection」メソッドがあります:
public static X509CertificateCollection GetX509CertificateCollection()
{
X509Certificate2 certificate1 = new X509Certificate2("c:\\ssl.txt");
X509CertificateCollection collection1 = new X509CertificateCollection();
collection1.Add(certificate1);
return collection1;
}
証明書を動的にロードするにはどうすればよいですか?