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
Qual é a diferença entre SSLCertificateFile
e SSLCertificateChainFile
? O cliente comprou uma chave CA do GoDaddy. Parece que o GoDaddy fornece apenas um SSLCertificateFile
(arquivo .crt) e um SSLCertificateKeyFile (arquivo .key) e não em SSLCertificateChainFile
.
Meu ssl ainda funcionará sem um SSLCertificateChainFile
caminho especificado?
Além disso, existe um caminho canônico em que esses arquivos devem ser colocados?
apache-2.2
ssl
chrisjlee
fonte
fonte
/etc/ssl
,/usr/local/etc/ssl
ou em umssl
subdiretório específico para o site (por exemplo/home/www/example.com/data
, o sitehome/www/example.com/ssl
possui os certificados).Respostas:
A rigor, você nunca precisa da cadeia para o SSL funcionar.
O que você sempre precisa é de um
SSLCertificateFile
comSSLCertificateKeyFile
a chave correta para esse certificado.O problema é que, se tudo o que você fornece ao Apache é o certificado, tudo o que tem a oferecer para conectar os clientes é o certificado - o que não conta toda a história sobre esse certificado SSL. Está dizendo: "Sou contratado por alguém, mas não vou falar sobre eles".
Isso geralmente funciona bem, pois a maioria dos sistemas clientes tem um grande repositório de certificados de CA (raiz e intermediário), que podem ser verificados por um relacionamento de assinatura correspondente para estabelecer confiança. No entanto, às vezes isso não funciona; na maioria das vezes, o problema no qual você se depara é um cliente que não possui o certificado de uma CA intermediária que assinou seu certificado.
É aí que entra a corrente; 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 confia e o intermediário que eles desconhecem. A cadeia pode ser incluída na sua configuração de uma de duas maneiras:
SSLCertificateFile
, em novas linhas após o certificado do servidor em ordem (a raiz deve estar na parte inferior). Se você configurá-lo dessa maneira, seráSSLCertificateChainFile
apontado exatamente para o mesmo arquivo queSSLCertificateFile
.SSLCertificateChainFile
diretiva; o certificado da CA que emitiu o certificado do servidor deve ser o primeiro no arquivo, seguido por outros na raiz.Verifique o arquivo de certificado que você possui agora - aposto que ele não possui os dados da cadeia incluídos. O que geralmente funciona bem, mas acabará causando um problema em algum navegador ou outro.
fonte
SSLCertificateChainFile
.SSLCertificateFile
eSSLCertificateChainFile
apontar para o mesmo arquivo combinado, que funciona - editei minha resposta para corrigir isso.Aqui está uma boa explicação das diferenças, bem como dos impactos observáveis entre a escolha de um contra o outro:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
fonte
Na verdade, o GoDaddy fornece uma cadeia intermediária:
http://support.godaddy.com/help/5238
Aqui está mais algumas discussões.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
O email do GoDaddy informando como fazer o download do seu novo certificado também terá informações sobre o arquivo de certificado intermediário. Está em algum lugar na parte inferior, talvez depois que seus olhos vidrem da verborragia e aumentam as vendas.
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 nos navegadores, pois eles não podem seguir a cadeia de certificados do seu site cert para um pertencente a uma autoridade de certificação que o navegador conhece.
fonte
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 resolverão a ordem eles mesmos, mas os clientes baseados em gnutls falharão em uma cadeia com a ordem incorreta.
Teste a ordem com gnutls-cli, como
onde /etc/ssl/certs/ca-certificates.crt é o local em que sua distribuição coloca os certificados combinados.
fonte