iis 申请SSL通道 无法访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iis 申请SSL通道 无法访问相关的知识,希望对你有一定的参考价值。

对IIS站点申请证书服务
通过证书服务器获取证书和证书链
完成IIS证书服务
申请SSL通道,要求客户端证书
在客户端安装了证书链
浏览服务器时用了https
但没跳出证书选择框
提示无法显示该页面
在IIS服务器做证书服务器
关闭服务器防火墙
故障依旧

请各位大虾赐教
网上的如何设置证书服务器IIS服务器就不要贴了
谢谢
用Https访问 出现的就是无法显示该网页
没有显示该网站证书有问题、弹出证书选择框等提示
就是连接不上
如果不用SSL可以用http访问
如果是“继续浏览此网站(不推荐)。 ”就成功了

这种情况下分为两部分,首先就是指向的域名或者公网IP地址没有开放443端口,如果采用域名看一下是否用了CDN或者WEB防火墙需要另外放行,如果是云服务器需要去提供商控制面板单独设置允许443端口放行。另外确定服务器肯定是安装了SSL证书,这种情况下可以在本地服务器看一下是否可以访问HTTPS,如果不可以访问就说明没有安装好。 参考技术A 你用Https访问 出现不是无法显示该网页吧?
是否显示该网站的安全证书有问题
如果是的话 你可以继续访问 你可以点击“继续浏览此网站(不推荐)。 ”
那你就可以访问到你的网页了

无法创建 SSL/TLS 安全通道。安全通道故障

【中文标题】无法创建 SSL/TLS 安全通道。安全通道故障【英文标题】:Could not create SSL/TLS secure channel. SecureChannelFailure 【发布时间】:2018-12-19 16:01:54 【问题描述】:

使用 SSL 证书进行 SOAP 调用时出现 SSL 错误:

请求被中止:无法创建 SSL/TLS 安全通道。

奇怪的是,如果我在 Firefox 中加载证书并访问端点或调用 API 而不发送任何数据,我不会收到任何错误消息并且连接成功。公开 API 的公司也提到该证书是 kosher。

我正在加载的证书对“所有人”具有完全权限。我已经尝试了我在互联网上看到的所有解决方案,但仍然出现错误。

这是我创建请求的代码:

 ServicePointManager.Expect100Continue = true;
 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 var request = (HttpWebRequest)WebRequest.Create(plugin.EndPoint);
 request.ContentType = "text/xml; charset=utf-8";
 request.Method = "POST";

获取证书的代码(我也尝试过使用 pfx):

var cert = new 
 509Certificate2(@"C:\clientcert.p12", "FakePassword");
request.ClientCertificates.Add(cert);

以及请求的代码:

  byte[] byteArray = Encoding.UTF8.GetBytes(xml);
    request.ContentLength = byteArray.Length;
    using (var dataStream = request.GetRequestStream())
                
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();


                    using (WebResponse response = request.GetResponse())
                    
                        using (var responseStream = response.GetResponseStream())
                        
                            StreamReader reader = 
new StreamReader(responseStream ?? throw new InvalidOperationException());
                            return reader.ReadToEnd();
                        
                    

                

编辑:

这是运行请求的跟踪输出:

System.Net 信息:0:[11844] InitializeSecurityContext(缓冲区内计数=2,缓冲区外长度=0, 返回代码=CertUnknown)。 System.Net 错误:0:[11844] 中的异常 HttpWebRequest#63832831:: - 请求被中止:无法创建 SSL/TLS 安全通道.. System.Net 错误:0:[11844] 中的异常 HttpWebRequest#63832831::EndGetRequestStream - 请求是 中止:无法创建 SSL/TLS 安全通道..

我还更改了 SecurityProtocol:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 

第二次编辑:我可以让它在 SoapUI 中工作,但不能在 .NET 应用程序中工作,只需从 SOAP UI 中的文件系统加载 SSL 证书。

【问题讨论】:

... 或在不发送任何数据的情况下调用 API,我没有收到任何错误消息 - 你确定你真的联系了服务器吗?案子? - 您可以尝试将所有值作为当前的 TLS 1.2 应用到 SecurityProtocol 或什么都不做。如果您对请求启用跟踪,您将获得详细的日志。 经过这么多研究,这个thread 为我工作! System.NET 跟踪说“返回代码=CertUnknown”,所以它必须包含其他信息供您挖掘。类似***.com/questions/9858275/… 这样的话题应该会给你一些提示。 这是一条“它不起作用”的异常消息。非常有意,他们不想给攻击者太多关于他做错了什么的信息。在另一台机器上启用日志记录,以便您确切地知道出了什么问题:support.microsoft.com/en-us/help/260729/… 如果日志内容没有帮助,那么您现在有很好的信息可以在 serverfault.com 上提问 【参考方案1】:

出于兴趣,您的应用正在使用 TLS 1.0、1.1 和 1.2 协议,但是否在 Internet Explorer 中启用了它的使用?

如果 web.config 中没有,请添加

<appSettings>
    <add key="SecurityProtocol" value="Tls12" />
</appSettings>

然后在 IE 的高级设置选项卡中检查它是否已启用:“使用 TLS 1.2”

【讨论】:

【参考方案2】:

您的 SSL 证书由未安装在 Windows 中的根证书签名。

Firefox 附带它自己的受信任根证书列表,其中包含您正在使用的证书的根证书。仅仅因为 Firefox 信任证书并不意味着 Windows 信任它。

解决方案是在运行您的应用的计算机上安装您的证书的根证书或证书链。

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development

如果这是一个拥有广泛受众的应用程序,更简单的解决方案是切换到已使用 Windows 附带的根证书的 SSL 提供程序。

【讨论】:

我使用 openssl 对证书进行自签名以进行测试。在上面的代码中,我从硬盘驱动器加载它,但是当我在我的证书本地存储中使用指纹检索它时,我得到了同样的错误。 见上面的链接。 我想我可以使用 MakeCert 而不是 OpenSSL,但是该证书已与其他实现一起使用,并且他们已经对其进行了验证。我需要继续使用该证书,除非我能给出足够充分的理由说明它为什么不起作用,或者 makecert 是 openssl 的更好替代品 您是否有一个正在使用的自签名证书,或者您是否有一个您一直在使用的证书颁发机构的实际证书?这是跨企业部署还是仅部署在几台机器上? 我有一个我一直在使用的自签名证书。它将于 2026 年到期,因此第 3 方希望继续使用该证书。我们的应用程序部署在 Azure 中,但我正在本地机器上进行测试。我不确定他们的架构。【参考方案3】:

有时我也有这个错误。我为克服这个问题所采取的步骤如下:

    从 IIS 导出您的证书 双击证书并按照向导进行操作 下一个存储位置“本地计算机”-> 填写导出时选择的密码 选中将证书放入商店的选项并选择您的“受信任的根证书颁发机构” 完成 -> 检查导入是否成功,输入“Windows 搜索”“certmgr.msc”导航到“受信任的根证书颁发机构”,然后找到证书文件夹。应提供导入的证书。 使用您的应用程序进行测试。

希望对你有帮助

【讨论】:

感谢您的回答。我已将其添加到“受信任的根证书颁发机构”中,但仍然出现错误

以上是关于iis 申请SSL通道 无法访问的主要内容,如果未能解决你的问题,请参考以下文章

无法使用来自 IIS 的权限为 SSL/TLS 建立安全通道

WCF 无法为具有 iis 权限的 SSL/TLS 安全通道建立信任关系

请求被中止:无法创建 SSL/TLS 安全通道

无法为 ssl/tls 权限建立安全通道

在 IIS 管理器中应用 SSL 证书和“该进程无法访问该文件,因为它正被另一个进程使用”错误

无法创建 SSL/TLS 安全通道。安全通道故障