本文介绍了此站点无法提供安全连接xxxxxxxx使用不受支持的协议 - WCF自托管的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我们有一个公开的WCF主机服务localhost端口9200上的[WebGet]方法。我们试图从javascript代码中使用它。它适用于IE11和Chrome v65。升级到chrome v68后,我开始收到以下错误   "此站点无法提供安全连接xxxxxxx使用不支持的协议。 ERR_SSL_VERSION_OR_CIPHER_ MISMATCH.Unsupported协议的 的 客户端和服务器不支持通用的SSL协议版本或密码套件。"   v68以上的任何版本的chrome都会出现同样的错误。 我已粘贴我的c#代码   **服务合同**      [WebGet(UriTemplate = "hello", ResponseFormat = WebMessageFormat.Json)][OperationContract]string HelloWorld();   ** appconfig **                   <configuration>        <startup>        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />      </startup>      <system.serviceModel>        <services>          <service name="SelfHostRestService.Service" behaviorConfiguration="ServiceBehavior">            <endpoint address=""                      bindingConfiguration="restBinding"                      binding="webHttpBinding"                      contract="Contracts.IService"                      behaviorConfiguration="webBehavior"/>          </service>        </services>        <behaviors>          <serviceBehaviors>            <behavior name="ServiceBehavior">                   <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />                       <serviceDebug includeExceptionDetailInFaults="true" />              <dataContractSerializer maxItemsInObjectGraph="6553600" />              <serviceThrottling maxConcurrentCalls="20" maxConcurrentSessions="40" maxConcurrentInstances="2147483647" />            </behavior>          </serviceBehaviors>          <endpointBehaviors>            <behavior name="webBehavior">              <webHttp />            </behavior>          </endpointBehaviors>        </behaviors>        <bindings>          <webHttpBinding>            <binding name="restBinding" crossDomainScriptAccessEnabled="true">              <security mode="Transport">                <transport clientCredentialType="None"/>              </security>            </binding>          </webHttpBinding>        </bindings>      </system.serviceModel>    </configuration>   **服务托管**          Uri netTcpAdddress = new Uri("https://Example.com:9200");ServiceHost wHostV2 = new ServiceHost(typeof(Service), netTcpAdddress);X509Certificate2 certificate = new X509Certificate2(System.Environment.CurrentDirectory + "\\" + "Example.pfx", "password");                    wHostV2.Credentials.ServiceCertificate.Certificate = certificate;wHostV2.Open();Console.WriteLine("Service is up and running");Console.WriteLine("Press enter to quit ");Console.ReadLine();wHostV2.Close();   经过我的分析,看起来我的服务只运行在SSL& TLS 1.0上。以下是我的NMAP扫描结果           9200/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)|_http-server-header: Microsoft-HTTPAPI/2.0| ssl-enum-ciphers:| SSLv3:| ciphers:| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C| TLS_RSA_WITH_DES_CBC_SHA (rsa 2048) - C| compressors:| NULL| cipher preference: server| warnings:| 64-bit block cipher 3DES vulnerable to SWEET32 attack| 64-bit block cipher DES vulnerable to SWEET32 attack| Broken cipher RC4 is deprecated by RFC 7465| CBC-mode cipher in SSLv3 (CVE-2014-3566)| Ciphersuite uses MD5 for message integrity| TLSv1.0:| ciphers:| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C| TLS_RSA_WITH_DES_CBC_SHA (rsa 2048) - C| compressors:| NULL| cipher preference: server| warnings:| 64-bit block cipher 3DES vulnerable to SWEET32 attack| 64-bit block cipher DES vulnerable to SWEET32 attack| Broken cipher RC4 is deprecated by RFC 7465| Ciphersuite uses MD5 for message integrity|_ least strength: C   我尝试将我的.net框架升级到4.7,如下面的博客所示没有工作.. https://docs.microsoft.com/en- us / dotnet / framework / migration- 指南/retargeting/4.6.2-4.7   感谢任何帮助。Any help is appreciated.推荐答案 嗨Remya J, On我的方面,我使用以下命令将SSL证书绑定到端口,它就像一个魅力。 Hi Remya J,On my side, I use the following command to binding the SSL cert to the port and it works like a charm.netsh http add sslcert port=0.0.0.0:9201 certhash=6e48c590717cb2c61da97346d5901b260e983850 appid={61466809-CD17-4E31-B87B-E89B003FABFA} certhash参数指定证书的指纹。 appid位于Project.csproj文件。 certhash parameter specifies the thumbprint of the certificate.The appid is inside of the Project.csproj file.<ProjectGuid>{56FDE5B9-3821-49DB-82D3-9DCE376D950A}</ProjectGuid> 以下是官方文件,希望对您有用。 https://docs.microsoft.com/en-us/windows/desktop/http/add-sslcert https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate 如果有任何我可以提供的帮助,请随时告诉我。 最好的问候 Abraham Here is the official document, wish it is useful to you.https://docs.microsoft.com/en-us/windows/desktop/http/add-sslcerthttps://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificateFeel free to let me know if there is anything I can help with.Best RegardsAbraham 这篇关于此站点无法提供安全连接xxxxxxxx使用不受支持的协议 - WCF自托管的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-17 16:50