Azure Windows应用商店应用程序是否始终不允许自签名证书(即使是明确受信任的证书)?
我看到了这两个问题——同一个问题,不同的问题 我正在尝试将我的Windows 8.1应用商店应用程序连接到ASP.NET Web API Web服务,该服务使用自签名证书通过HTTPS进行保护。这是一个概念验证应用程序,最终将出现在<5台不同的机器上,并且只能在内部看到,因此我计划只在每个目标机器上安装受信任的证书 在我的开发设置中尝试此操作时,两个HttpClient API在调用服务时都无法建立信任关系Azure Windows应用商店应用程序是否始终不允许自签名证书(即使是明确受信任的证书)?,azure,ssl,asp.net-web-api,windows-store-apps,self-signed,Azure,Ssl,Asp.net Web Api,Windows Store Apps,Self Signed,我看到了这两个问题——同一个问题,不同的问题 我正在尝试将我的Windows 8.1应用商店应用程序连接到ASP.NET Web API Web服务,该服务使用自签名证书通过HTTPS进行保护。这是一个概念验证应用程序,最终将出现在
- Windows.Web.Http.HttpClient异常:“证书颁发机构无效或不正确”
- System.Net.Http.HttpClient异常:“根据验证过程,远程证书无效。”
- ASP.NET Web API
- Azure emulator中运行的Azure web角色
- 证书颁发者:127.0.0.1
- 证书主题:127.0.0.1
- 证书密钥:2048位
- Windows 8.1应用商店
- 用户\受信任的根证书颁发机构中安装的证书(.cer文件,仅限公钥)
- 本地计算机\受信任的根证书颁发机构中安装的证书(.cer文件,仅限公钥)
- 已将证书(.cer文件,仅限公钥)添加到“CA”下的Windows应用商店应用程序清单
我并不是要求解决办法来配置HttpClient以接受自签名或无效的证书—我只是想配置与此证书的信任关系。这可能吗?您应该能够通过执行以下请求来找出证书的问题:
// using Windows.Web.Http;
private async void Foo()
{
HttpRequestMessage request = null;
try
{
request = new HttpRequestMessage(
HttpMethod.Get,
new Uri("https://localhost"));
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.SendRequestAsync(request);
}
catch (Exception ex)
{
// Something like: 'Untrusted, InvalidName, RevocationFailure'
Debug.WriteLine(String.Join(
", ",
request.TransportInformation.ServerCertificateErrors));
}
}
使用HttpBaseProtocolFilter
可以忽略证书错误:
// using Windows.Web.Http;
// using Windows.Web.Http.Filters;
// using Windows.Security.Cryptography.Certificates;;
HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.RevocationFailure);
HttpClient client = new HttpClient(filter);
HttpResponseMessage response = await client.SendRequestAsync(request);
我遗漏的一点是,该证书不在我本地计算机上的IIS服务器证书列表中 打开IIS管理器并查看服务器证书部分,我确实发现Azure emulator已经设置了127.0.0.1 SSL证书:
- CN=127.0.0.1
- O=仅测试
- OU=Windows Azure DevFabric
如果有人能确定这方面的技术细节,请发表评论-这一修复感觉有点神奇,我不确定我能准确地指出这一工作的原因。可能是我对127.0.0.1的两个证书感到困惑,尽管我在Azure项目中配置的指纹始终是我打算使用的指纹?谢谢-我对忽略上述证书错误的解决方法不感兴趣,但不知道ServerCertificateErrors属性。这只是出现了一个“不可信”的错误。这能告诉我更多吗?