Como pode o cliente SSL validar o certificado do servidor?
-
03-07-2019 - |
Pergunta
Estou construindo uma aplicação e estou pensando em usar OpenSSL para proteger transferências de dados.
Estou pensando em ter apenas a validar cliente o certificado do servidor. Estou confuso sobre como eu deveria garantir o certificado do servidor. Gostaria de criptografar o certificado do servidor que contém a chave privada, mas eu não quero usar quaisquer chaves codificadas duras para essa criptografia.
O que são algumas das práticas comuns seguido de aplicações que empregam SSL?
Solução
Apenas para se certificar de que temos nossa terminologia direto, um "certificado SSL" na linguagem comum é realmente composto por dois componentes:
- Um certificado público
- A chave privada
O componente certificado público é assinado pelo seu CA escolhido (autoridade de certificação), após o que pode ser distribuído livremente. Ele não precisam ser protegidos ou criptografados, e na verdade ele será enviado para clientes que se conectam ao seu servidor como parte da negociação SSL.
O componente chave privada deve ser protegida. Na maioria dos casos, isso é simplesmente armazenado como um arquivo criptografado no servidor. soluções de luxo usar dedicado "inviolável" hardware criptográfico (HSMs - módulos de segurança de hardware) para armazenar a chave privada. Estes variam de soluções baseadas em smart-card para multi-chave, rede habilitada aparelhos com m / n controles etc etc Existem riscos (para não mencionar os custos) associados com HSMs que eu não vou entrar aqui.
Muitas aplicações simplesmente reter a chave privada no disco. Há um par de opções para proteger o arquivo de chave:
- confiar no sistema e segurança de permissão de arquivo (ou seja, não chave privada criptografar). Por exemplo, a maioria dos daemons ssh fazer isso.
- Use qualquer mecanismo de seu servidor fornece para criptografar o arquivo - criptografia protegida por senha é um recurso padrão na maioria dos servidores web. (Se você está rolando o seu próprio usando a API do OpenSSL, escolher um dos principais formatos nativos óbvias).
Como sempre, há um trade-off de segurança. Em particular, se você estiver usando criptografia protegida por senha no arquivo de chave privada e você experimenta um inesperado reinicialização do aplicativo (por exemplo, falta de energia), então alguém terá de estar disponível para fornecer a senha para o aplicativo como ele é reiniciado. Armazenar a senha em um arquivo que é lido por scripts de inicialização do sistema (como incentivada por pelo menos dois fornecedores de servidores web) acrescenta pouco em termos de segurança real. É difícil recomendar deixando o arquivo de chave privada não criptografada, mas se você é o único admin / techy em uma pequena loja, você deve definitivamente considerar o que poderia acontecer se o servidor for reinicializado quando você não está disponível, eo que os custos podem ser para o seu negócio .
Outras dicas
não é completamente certo o que você está tentando fazer. o certificado de servidor é enviado a você, o cliente; validar o certificado, verificando sua assinatura A chave que você tem a partir do CA é o lado público (uso SHA-1 não MD5, MD5 foi quebrado.); o CA eo titular da cert servidor manter suas chaves privadas para si. Você pode validar o certificado porque a chave pública é suficiente para descriptografar uma mensagem que tem sido criptografado com a chave privada. Então você não precisa se preocupar, no lado ciente, sobre como manter o certificado criptografado em tudo.
Tenha um olhar para o href="http://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake_in_detail" rel="nofollow noreferrer"> artigo .
Estou confuso sobre como eu deveria garantir o certificado do servidor.
Você não tem que garantir o certificado do servidor. É um documento público
Gostaria de criptografar o certificado do servidor que contém a chave privada
O certificado do servidor não contém a chave privada.
mas eu não quero usar quaisquer chaves codificadas duras para essa criptografia.
Você não precisa fazer qualquer criptografia. O único ativo servidor você precisa para proteger é a sua chave privada, que é inteiramente distinto do seu certificado. No caso do OpenSSL pode até ser um arquivo diferente.