Os certificados digitais válidos são necessários para os clientes (Java, C ++ etc) para fazer conexões HTTPs bem -sucedidas?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Pergunta

Estou planejando implementar um pequeno programa independente que fará uma solicitação HTTPS a um servidor. Isso exige um certificado SSL válido no cliente? Como o SSL Handshake funciona nesse caso? Existem problemas de segurança no cliente não têm um certificado SSL?

Foi útil?

Solução

Além de criptografar o tráfego de rede, o HTTPS é normalmente usado para autenticar o servidor. Ou seja, para fornecer aos clientes informações tranquilizadoras sobre quem possui o servidor etc. Para que isso funcione, o cliente precisa inspecionar a cadeia de confiança no certificado publicado pelo servidor. Para que isso aconteça automaticamente, a máquina cliente deve ter um certificado instalado que descreva uma autoridade de certificação que emitiu o certificado do servidor. Normalmente, esses certificados são encontrados em sua máquina em uma loja chamada "autoridades de certificação de raiz confiáveis" e a maioria dos sistemas operacional vem com um conjunto de CAS comuns já instalados.

Além disso, muitos servidores da Web oferecem um recurso em que o cliente pode se autenticar para o servidor fornecendo um certificado de cliente. O servidor da Web pode inspecionar o certificado proveniente do cliente e mapeá -lo em um conjunto de permissões no servidor. Essa "autenticação do cliente" não é necessária para uma sessão HTTPS em funcionamento, no entanto, é apenas uma opção.

Em suma, você não precisar qualquer certificado sobre o cliente, mas você provavelmente irá querer ter um certificado CA root para validar a identidade do servidor. Se você não tiver esse certificado, será impossível confiar no servidor (a menos que você tenha outro bom motivo para fazê -lo), mas você pode optar por trocar dados com ele de qualquer maneira.

Outras dicas

Se você deseja aprender mais sobre o handshake HTTPS e o que é negociado, recomendo que você olhe para esta excelente redação no Moserware

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

Um certificado de cliente é necessário apenas se o servidor exigir um. Um certificado de cliente permite ao servidor autenticar o cliente, mas isso só é útil se o servidor tiver uma lista de todos os clientes autorizados. Geralmente, esse não é o caso de um servidor da Web, por isso é bastante raro exigir certificados de cliente.

Quando presente, o certificado do lado do cliente não afeta o estabelecimento do canal seguro. (Somente o certificado do servidor é necessário para isso e adicionar um certificado de cliente ao mix não altera o processo.) Depois que um canal seguro for estabelecido, o servidor usará o certificado do cliente, o autenticar o cliente (geralmente comparando o público do cliente chave ou nome com uma lista de clientes autorizados).

Você não precisa de um certificado para fazer uma conexão HTTPS, mas precisa se quiser saber com quem está se comunicando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top