Windows 8处理不受信任的证书

时间:2013-11-07 08:00:21

标签: c# windows-8 windows-runtime

我已经看到很多关于此的问题,并且回答:

ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;

但它不会添加使用。

我正在编写一个Windows 8项目,而不是Windows 8.1

但是所有文件都说支持的平台是:Windows 8 http://msdn.microsoft.com/ru-ru/library/system.net.security.protectionlevel(v=vs.110).aspx

这有什么解决方法吗?在Windows 8.0中?

因为这意味着我们的应用无法在Windows 8上运行。

1 个答案:

答案 0 :(得分:0)

对于Windows 8,有两种情况。

您的证书已知:您可以将证书添加到应用程序并添加a declaration to the package manifest

您需要信任未知证书,您需要自定义SSL / TLS实施。例如,您可以使用WinRT Bouncy Castle。有几种方法可以支持不受信任的证书。更简单的方法是实现自定义ICertificateVerifyer并在常规WinRT普通套接字上连接TlsProtocolHandler:

        this.port = port;
        host = new Windows.Networking.HostName(hostName);

        socket = new Windows.Networking.Sockets.StreamSocket();

        await socket.ConnectAsync(host, port.ToString(), Windows.Networking.Sockets.SocketProtectionLevel.PlainSocket);
        handler = new TlsProtocolHandler(socket.InputStream.AsStreamForRead(), socket.OutputStream.AsStreamForWrite());
        handler.Connect(certificateVerifyer);