这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。 C#

Posted

技术标签:

【中文标题】这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。 C#【英文标题】:This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. c# 【发布时间】:2021-06-15 20:11:10 【问题描述】:

也许这个问题已经有了,但我认为情况不同。 我从 Web 配置文件配置所有必需的东西并安装证书。

我在 ASP.NET WEB API 中使用 java web 服务。 SOAP 服务已配置相互身份验证。 (双向 SSL) 我有 2 个密钥库文件。 (client.jks 和 truststore.jks)

我的完整错误:这可能是由于服务器证书是 在 HTTPS 情况下未使用 HTTP.SYS 正确配置。 这也可能是由于之间的安全绑定不匹配造成的 客户端和服务器。'

网络配置:

<customBinding>
        <binding name="MyBinding">
          <textMessageEncoding messageVersion="Soap11"/>
          <security authenticationMode="MutualCertificate" enableUnsecuredResponse="true" allowSerializedSigningTokenOnReply="true"
                    messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                    includeTimestamp="false">
          </security>
          <httpsTransport />
        </binding>
</customBinding>


<endpoint behaviorConfiguration="ClientCredentialsBehavior" address="https://abc.bank.dm:9193/Money/Money" binding="customBinding" bindingConfiguration="MyBinding" contract="Ref.Port" name="Port">
        <identity>
          <dns value="test"/>
        </identity>
</endpoint>


<behaviors>
      <endpointBehaviors>
        <behavior name="ClientCredentialsBehavior">
          <clientCredentials>
            <clientCertificate findValue="2d73n94087857dndyr874ydr"
                 storeLocation="CurrentUser"
                 storeName="My"
                 x509FindType="FindByThumbprint" />
            <serviceCertificate>
              <defaultCertificate findValue="d346n32d48938w43d943095d"
                                  storeLocation="CurrentUser"
                                  storeName="TrustedPeople"
                                  x509FindType="FindByThumbprint" />
              <authentication certificateValidationMode="None" revocationMode="NoCheck"/>

            </serviceCertificate>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
</behaviors>

【问题讨论】:

【参考方案1】:

尝试在客户端和服务器上指定相同的协议。在客户端添加如下代码:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

这是参考:TLS 1.2

【讨论】:

感谢您的回答,但我已经尝试过此代码。我得到同样的错误。

以上是关于这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。 C#的主要内容,如果未能解决你的问题,请参考以下文章

在 https 下未加载重力表单,未定义 jQuery

Windows无法使用HTTP,HTTPS或FTP连接到Internet,这可能由于此计算机上的防火墙设置而导致的。

UNUserNotificationCenter Swift - 在特定情况下未触发本地通知

关于JSON.parse在ie6,ie7下未定义的issue

在选择情况下未触发asp gridview可见性

这可能是由于服务端点绑定未使用 HTTP 协议