Ao usar o Apache com SSL, todo o certificado especificado com a diretiva “SSLCertificateFile” é entregue ao cliente?

1

Ao usar o Apache com SSL, todo o certificado especificado com a diretiva “SSLCertificateFile” é entregue ao cliente?

Em caso afirmativo, ele contém a chave privada e a chave pública?

    
por Corey 13.08.2010 / 23:36

4 respostas

1

Apenas o certificado (que contém a chave pública e informações extras, como a identidade da máquina, mas não a chave privada) é enviado ao cliente. Se houver uma cadeia para uma CA (via SSLCertificateChainFile ou via SSLCACertificatePath ou SSLCACertificateFile ), a cadeia de certificados deve ser enviada. Você verá a cadeia completa com as opções -showcerts com openssl s_client :

echo | openssl s_client -showcerts -connect www.your.host.example:443

Você pode, mas não precisa colocar a chave privada no mesmo arquivo, ela pode ser separada em SSLCertificateKeyFile .

    
por 14.08.2010 / 00:00
2

Apenas a chave pública é transmitida para o cliente. O SSLcertificatefile especifica a chave pública e a diretiva SSLcertificateKeyFile da diretiva é para a chave privada.

Se você deseja ver exatamente o que é transmitido, pode usar o openssl para se conectar e ver o certificado. Um comando como este openssl s_client -connect www.google.org:443 se conectará ao google e você verá o certificado público e alguns detalhes sobre o certificado.

    
por 13.08.2010 / 23:42
1

Isso me levou muito tempo para envolver minha mente, mas uma vez que você consegue, apenas clica.

O Apache não faz isso. Por um bom motivo.

Você viu esses CSRs enviados para obter seu CSR, certo? Com a informação (nome comum, cidade, estado, etc.)

Bem, uma chave privada praticamente compacta essa informação, e a única maneira de desbloqueá-la é usar a chave pública. Você pode dar isso como doce, mas você não distribui a chave privada.

Então, agora que você envia esses dados para um navegador da Web quando ele acessa sua página, o navegador usa sua chave pública para decodificar essas informações. Se a chave pública é a certa, o navegador vê (nome comum, cidade, estado, etc.) e sabe que o cara com quem está falando é legítimo.

Se a chave privada fosse algum servidor aleatório lá fora, os dados mesclados seriam descriptografados em mais dados mesclados. Lixo total. O navegador nesse ponto sabe que está falando com um impostor.

Além disso - o navegador usa chaves públicas da pessoa que assinou sua chave original (digamos, verisign ou godaddy), porque essas são fontes conhecidas e confiáveis ... Elas fazem isso para garantir que também conversem com a pessoa certa . É por isso que você geralmente recebe seus certificados de alguém como a Verisign.

Além disso - Você pode assinar seus próprios certificados e fazer com que seus usuários (como em um Domínio do AD) confiem em você, mas você precisa garantir que todas as máquinas de seus usuários confiam em seu "signatário". Esse é o próximo nível ...

    
por 14.08.2010 / 08:43
0

A chave pública é enviada para o cliente, que criptografa os dados usando essa chave pública, mas somente a chave privada pode descriptografar os dados.

A chave privada nunca é enviada para o cliente, o que prejudicaria todo o sentido de criptografar a comunicação.

    
por 13.08.2010 / 23:40