MLP*_*CiM 0 c# ssl bouncycastle ssl-certificate windows-phone-8
尽管尝试了所有安全措施,我希望我的客户端接受自签名的X.509证书,就像我们服务器中的证书一样.我正在使用WP8 SKD以及用于Windows Phone的Bouncy Castle的C#绑定,名为bouncywp7.1,因此大多数类/方法都可用.
在Android中完成此操作的方法是创建我自己的证书信任管理器,并使其对所有证书都返回true.
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);
}
Run Code Online (Sandbox Code Playgroud)
在Windows Phone 8上执行相同操作的最不痛苦的方法是什么?
AFAIK你不能在WP8上欺骗SSL.您要么使用SSL,要么不是.你无法覆盖证书验证(或者至少我从未听说过).
如果您使用的是SSL,并且希望使用自定义证书,那么用户应该是安装它的人.例如,通过向用户发送cer文件,让用户通过设置屏幕加入您的组织,甚至通过使用Luncher.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"));
}
Run Code Online (Sandbox Code Playgroud)
运行此代码段会向用户显示以下对话框:

| 归档时间: |
|
| 查看次数: |
2667 次 |
| 最近记录: |