Устранение рисков: службы WCF и проверка подлинности на основе сертификатов

Платформа .NET Framework 4.6 добавляет TLS 1.1 и TLS 1.2 в список протоколов SSL WCF по умолчанию. Если на клиентских и серверных компьютерах установлена платформа .NET Framework 4.6 или более поздней версии, протокол TLS 1.2 используется для согласования.

Воздействие

TLS 1.2 не поддерживает проверку подлинности сертификата MD5. В результате, если клиент использует SSL-сертификат, использующий MD5 для хэш-алгоритма, клиент WCF не сможет подключиться к службе WCF. Дополнительные сведения см. в разделе "Устранение рисков: службы WCF и проверка подлинности сертификатов".

Смягчение последствий

Эту проблему можно обойти так, чтобы клиент WCF смог подключиться к серверу WCF, выполнив одно из следующих действий:

  • Обновите сертификат, чтобы не использовать алгоритм MD5. Это рекомендуемое решение.

  • Если привязка не настроена динамически в исходном коде, обновите файл конфигурации приложения, чтобы использовать TLS 1.1 или более раннюю версию протокола. Это позволяет продолжать использовать сертификат с алгоритмом хэша MD5.

    Осторожность

    Это решение не рекомендуется, так как сертификат с алгоритмом хэша MD5 считается небезопасным.

    Следующий файл конфигурации выполняет следующее:

    <configuration>
        <system.serviceModel>
            <bindings>
                <netTcpBinding>
                    <binding>
                        <security mode= "None|Transport|Message|TransportWithMessageCredential" >
                            <transport clientCredentialType="None|Windows|Certificate"
                                                protectionLevel="None|Sign|EncryptAndSign"
                                                sslProtocols="Ssl3|Tls1|Tls11">
                            </transport>
                        </security>
                    </binding>
                </netTcpBinding>
            </bindings>
        </system.serviceModel>
    </configuration>
    
  • Если привязка динамически настроена в исходном коде, обновите TcpTransportSecurity.SslProtocols свойство, чтобы использовать TLS 1.1 (SslProtocols.Tls11) или более раннюю версию протокола в исходном коде.

    Осторожность

    Это решение не рекомендуется, так как сертификат с алгоритмом хэша MD5 считается небезопасным.

См. также