Chrome (v71) ERR_CONNECTION_RESET на локальном хосте с собственной подписью в Windows 8 Embedded - PullRequest
0 голосов
/ 08 января 2019

Я запускаю службу WCF, которая предоставляет API на локальном компьютере (https://localhost:8080/MyApi), самоподписанный сертификат SHA-256, зарегистрированный на локальном компьютере, выполненный "netsh http add sslcert ipport=0.0.0.0:8080 certhash=... appid=..." и при просмотре https://localhost:8080/MyApi из Chrome он показывает ERR_CONNECTION_RESET.

Теперь самое смешное:

  1. Прекрасно работает с Chrome v41. Произошло только после обновления до Chrome v69 (и то же самое на v71).
  2. Хорошо работает просмотр из IE.
  3. Вызов API из веб-вызова PowerShell также работает.
  4. То же самое в Windows 10 работает нормально.
  5. Изменение # allow-insecure-localhost на ENABLED работает в Windows 10, но не в Windows 8 Embedded.

После активации регистрации хрома нашел это:

{"params":{"net_error":-101,"os_error":10054},"phase":0,"source":{"id":7810,"type":8},"time":"52598608","type":68},
{"params":{"error_lib":33,"error_reason":101,"file":"../../net/socket/socket_bio_adapter.cc","line":154,"net_error":-101,"ssl_error":1},"phase":0,"source":{"id":7810,"type":8},"time":"52598608","type":54},

Дополнительная регистрация Chrome:

[8652: 5036: 0107 / 174231,775: ОШИБКА: ssl_client_socket_impl.cc (1013)] рукопожатие не удалось; вернул -1, код ошибки SSL 1, ошибка_сети -101 [8652: 5036: 0107 / 174231,793: ОШИБКА: ssl_client_socket_impl.cc (1013)] рукопожатие не удалось, ред; вернул -1, код ошибки SSL 1, ошибка_сети -101 [8652: 5036: 0107 / 174231,795: ОШИБКА: ssl_client_socket_impl.cc (1013)] рукопожатие не удалось, ред; вернул -1, код ошибки SSL 1, net_error -101

Есть ли у вас какие-либо идеи, как сделать Chrome успешным доступом к моему локальному серверу WCF?

1 Ответ

0 голосов
/ 11 января 2019

Как вы публикуете свой сервис wcf? Я хотел бы, чтобы вы могли опубликовать более подробную информацию о вашем сервисе. Я следовал твоим шагам, пока не смог воспроизвести твою проблему. Вот мое демо, желаю, чтобы оно вам пригодилось.
Сервер (Консольное приложение, IP: 10.157.13.69).

class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost sh = new ServiceHost(typeof(MyService)))
            {

                sh.Opened += delegate
                {
                    Console.WriteLine("service is ready...");
                };
                sh.Closed += delegate
                {
                    Console.WriteLine("Service is closed");
                };
                sh.Open();
                Console.ReadLine();
                sh.Close();
            }
        }
    }
    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        [WebGet]
        string SayHello();
    } 
    public class MyService : IService
    {
        public string SayHello()
        {
            return $"Hello, busy world\n{DateTime.Now.ToShortTimeString()}";
        }
}

app.config

<system.serviceModel>
    <services>
      <service name="Server6.MyService" behaviorConfiguration="mybeh">
        <endpoint address="" binding="webHttpBinding" contract="Server6.IService" behaviorConfiguration="rest" bindingConfiguration="mybinding" >
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"></endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:13060"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="mybinding">
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mybeh">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"></serviceMetadata>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="rest">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

Привязка сертификата к порту ip

netsh http add sslcert ipport=0.0.0.0:13060
certhash=6e48c590717cb2c61da97346d5901b260e983850 appid={AA228B95-6613-4D58-9236-2C263AFDF231}

Результат. все эти версии браузера V71.0
Local.
enter image description here
Удаленный механизм.
enter image description here
Браузер.
enter image description here

Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...