Por que o SSL Cipher-Suite do Windows é restrito sob certos certificados SSL?

14

Problema: o Windows Server 2008 R2 suportará apenas os seguintes conjuntos de códigos SSL ao usar determinados certificados no servidor:

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

Isso evita que os clientes XP se conectem ao servidor, já que a API de criptografia do XP não suporta nenhuma cifra do AES por padrão.
Como resultado, os seguintes erros aparecem nos logs do servidor ao tentar se conectar usando o Internet Explorer ou a área de trabalho remota. (já que eles usam o CAPI da microsoft)

Schannel Error 36874 "An TLS 1.0 connection was recieved from a remote client application, but dodne of the cipher suites supported by the client are supported by the server. The SSL connection request has failed."
Schannel Error 36888 "The following fatal alert was generated: 40. The internal error state is 1204"

    
por Gary 03.08.2010 / 20:04

4 respostas

14

Se o certificado que está sendo usado no servidor foi gerado usando a opção Legacy Key no formulário de solicitação de certificado, a chave privada desse certificado será armazenada na estrutura herdada da API Cryptographic da Microsoft. Quando o servidor da Web tenta processar solicitações usando sua nova estrutura, CNG (Cryptographic Next Generation), parece que algo relacionado à chave privada RSA armazenada na estrutura legada não está disponível para a nova estrutura. Como resultado, o uso dos pacotes de criptografia RSA é severamente limitado.

Solução:
Gere a solicitação de certificado usando o modelo CNG Key no assistente de solicitação de certificado personalizado.

MMC | Local Computer Certificate Manager | Personal Certificates Folder | (right click) | All Tasks -> Advanced Operations | Create Custom Request | "Proceed without enrollment policy" | select "(no template) CNG key" | proceed to complete the certificate request according to your needs.

Verificando se a chave está no lugar certo: link link a> link

Ferramentas para verificar os conjuntos de códigos corretos: link
link

Configurações de conjuntos de criptografia SSL: link
link

Isso nos levou uma semana para descobrir. Espero que isso salve alguém o mesmo problema.

    
por 03.08.2010 / 21:46
2

Recebi este mesmo problema e este post me poupou muito tempo, então obrigado!

A solução de Gary está correta, mas consegui resolver o problema simplesmente convertendo o PFX para o PEM e depois voltando ao PFX novamente usando o openssl. O novo PFX importou o certificado no IIS da mesma forma com a diferença de poder ver as cifras ausentes.

É assim:

openssl pkcs12 -in mycert.pfx -out mycert.cer -nodes

Em seguida, divida o arquivo cer em três, a chave, o certificado e o certificado intermediário [s]

openssl pkcs12 -export -out mycert-new.pfx -inkey mycert.key \
-in mycert.crt -certfile mycert-intermediate.crt

Então, se você importar o novo arquivo .pfx para o IIS, ele usará todas as cifras que você espera ver.

Portanto, não é necessário reemitir o certificado.

    
por 11.11.2014 / 00:20
0

Obrigado, sua postagem me ajudou, embora meu problema não seja exatamente o mesmo.

No entanto, a causa foi um erro de configuração da API WINHTTP SERVER da minha parte. Meu IP mudou, e quando eu coloquei um novo certificado de servidor na máquina "MY", eu ignorei o código de retorno ALREADY_EXISTS para HttpSetServiceConfiguration.

Então eu usei um certificado TLS de servidor anterior que tinha o nome comum errado e não correspondia ao meu novo nome de servidor.

Se você não fizer HttpDeleteServiceConfiguration () ou a linha de comando "netsh http delete sslcert 0.0.0.0:8443" corretamente, você receberá um erro desagradável com estes sintomas:

1) No TLS, o seu Client Hello é imediatamente atendido com um pacote TCP do seu servidor com os bits de sinalizador Ack e Reset definidos. (Um alerta de falha de handshake, eu acho?)

2) O visualizador de eventos fica   "O seguinte alerta fatal foi gerado: 40. O estado de erro interno é 107".

"Um pedido de conexão SSL 3.0 foi recebido de um aplicativo cliente remoto,    mas nenhum dos conjuntos de criptografia suportados pelo aplicativo cliente é suportado pelo servidor.    A solicitação de conexão SSL falhou. "

Portanto, antes de ir atrás de uma incompatibilidade de conjunto de criptografia, verifique se você realmente está usando o certificado do servidor com o qual deseja usar:

         netsh http show sslcert

e verifique os valores de hash!

    
por 04.01.2012 / 22:44
0

Este pode ser o problema KeySpec = 2 - AT_SIGNATURE

certutil -verifystore -v Meu "Thumbprint of cert" para verificar o valor de KeySpec. Se for 2, você precisará exportar o certificado como um arquivo PFX e, em seguida, executar o certutil -importpfx AT_KEYEXCHANGE para corrigi-lo.

    
por 28.02.2014 / 03:05