C# TLS连接:覆盖证书验证
尽管尝试了所有的安全措施,我还是希望我的客户端接受自签名的X.509证书,就像我们服务器上的证书一样。我使用的是WP8 SKD和BouncyCastle for Windows Phone的C绑定,名为bouncywp7.1,因此它的大多数类/方法都是可用的 在Android中实现这一点的方法是创建我自己的证书信任管理器,并使所有证书都返回trueC# TLS连接:覆盖证书验证,c#,ssl-certificate,bouncycastle,ssl,windows-phone-8,C#,Ssl Certificate,Bouncycastle,Ssl,Windows Phone 8,尽管尝试了所有的安全措施,我还是希望我的客户端接受自签名的X.509证书,就像我们服务器上的证书一样。我使用的是WP8 SKD和BouncyCastle for Windows Phone的C绑定,名为bouncywp7.1,因此它的大多数类/方法都是可用的 在Android中实现这一点的方法是创建我自己的证书信任管理器,并使所有证书都返回true public static void allowAllSSL() { HttpsURLConnection.setDefaultHostn
public static void allowAllSSL()
{
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(final String hostname, final SSLSession session) {
return true;
}
});
SSLContext context = null;
try {
context = SSLContext.getInstance("TLS");
context.init(null, sTrustManagers, new SecureRandom());
} catch (final NoSuchAlgorithmException catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
} catch (final KeyManagementException catchException) {
LoggerFactory.consoleLogger().printStackTrace(catchException);
}
mFakeFactory = context.getSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(mFakeFactory);
}
在Windows Phone 8上执行相同操作最不痛苦的方法是什么?如果您无法在WP8上欺骗SSL。您要么使用SSL,要么不使用SSL。您不能覆盖证书验证,或者至少我从未听说过它 如果您正在使用SSL,并且希望使用自定义证书,则安装该证书的用户应该是用户。e、 g.通过向用户发送cer文件的电子邮件,通过设置屏幕让用户加入您的组织,甚至通过使用午餐器.LaunchFileAsync从您的应用程序加入cer文件 例如,如果在项目中包含FiddlerRoot.cer,且Build Action=Content,则可以要求用户使用以下代码段进行安装:
private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Launcher.LaunchFileAsync(await Package.Current.InstalledLocation.GetFileAsync("FiddlerRoot.cer"));
}
运行此代码段会向用户显示以下对话框:
如果你要投否决票,至少你可以就这个问题的错误提供一些反馈。这和覆盖证书验证一样是一个糟糕的黑客行为,而且似乎很有效,所以先生,你很荣幸