Diferença entre SSLCertificateFile e SSLCertificateChainFile?

30

Normalmente, com um host virtual, um ssl é configurado com as seguintes diretivas:

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

De: Para habilitar SSL para um único domínio em um servidor com vários vhosts, esta configuração funcionará?

Qual é a diferença entre SSLCertificateFile e SSLCertificateChainFile ? O cliente adquiriu uma chave de CA do GoDaddy. Parece que o GoDaddy fornece apenas um SSLCertificateFile (arquivo .crt) e um SSLCertificateKeyFile (arquivo .key) e não em SSLCertificateChainFile .

O meu ssl ainda funciona sem o caminho SSLCertificateChainFile especificado?

Além disso, existe um caminho canônico onde esses arquivos devem ser colocados?

    
por chrisjlee 24.04.2012 / 17:43

4 respostas

43

Estritamente falando, você nunca precisa da cadeia para o SSL funcionar.

O que você sempre precisa é um SSLCertificateFile com um SSLCertificateKeyFile contendo a chave correta para esse certificado.

O problema é que, se tudo que você dá ao Apache é o certificado, então tudo o que ele tem a oferecer para conectar clientes é o certificado - que não conta toda a história sobre esse certificado SSL. Está dizendo: "Eu assinei com alguém, mas não vou falar sobre eles".

Isso geralmente funciona bem, já que a maioria dos sistemas cliente possui um grande armazenamento de certificados de CA (raiz e intermediário), que pode verificar através de um relacionamento de assinatura correspondente para estabelecer confiança. No entanto, às vezes isso não funciona; na maioria das vezes, o problema que você enfrentará é um cliente que não possui o certificado para uma CA intermediária que assinou seu certificado.

É aí que a corrente entra; Ele permite que o Apache mostre ao cliente exatamente como é a relação de confiança, o que pode ajudar um cliente a preencher os espaços em branco entre seu certificado, uma raiz em que eles confiam e o intermediário que eles não conhecem. A cadeia pode ser incluída em sua configuração de duas maneiras:

  • Incorporado no mesmo arquivo que você definiu para seu SSLCertificateFile , em novas linhas após o certificado do servidor em ordem (a raiz deve estar na parte inferior). Se você configurá-lo assim, você vai querer SSLCertificateChainFile apontou para o mesmo arquivo exato como SSLCertificateFile .
  • Em um arquivo separado configurado na diretiva SSLCertificateChainFile ; o certificado da CA que emitiu o certificado do servidor deve ser o primeiro no arquivo, seguido por quaisquer outros na raiz.

Verifique o arquivo de certificado que você tem agora - estou apostando que ele não tem os dados da cadeia incluídos. O que geralmente funciona bem, mas acabará causando um problema com algum navegador ou outro.

    
por 24.04.2012 / 17:51
4

Aqui está uma boa explicação das diferenças, bem como os impactos observáveis entre escolher um contra o outro:

link

    
por 24.04.2012 / 17:45
4

Na verdade, o GoDaddy oferece uma cadeia intermediária:

link

Aqui estão mais algumas discussões.

link

O e-mail do GoDaddy informando como baixar seu novo certificado também terá informações sobre o arquivo de certificado intermediário. É em algum lugar para o fundo, talvez depois que seus olhos venham do verbiage e upsell.

Em termos do que acontecerá se você não incluir a diretiva SSLCertificateChainFile adequada: você verá um grande aviso vermelho em seu navegador porque seu site SSL não será validado em navegadores, pois eles não podem seguir a cadeia de certificados do certificado do seu site para um pertencente a uma autoridade de certificação que o navegador conhece.

    
por 24.04.2012 / 17:51
2

Gostaria de acrescentar às boas respostas anteriores sobre o SSLCertificateChainFile que a ordem dos certificados nesse arquivo também é importante. Os clientes baseados em OpenSSL classificarão o pedido em si, mas os clientes baseados em gnutls falharão em uma cadeia com o pedido incorreto.

Teste a ordem com gnutls-cli, como

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

em que /etc/ssl/certs/ca-certificates.crt é o local em que sua distribuição coloca os certificados combinados.

    
por 29.09.2012 / 22:39