Depende. Os certificados X.509v3 geralmente vêm com um campo de extensão "Extended Key Usage", que contém uma lista de usos permitidos (EKUs).
-
Certificados servidor regulares da web contêm o uso de "Autenticação do servidor TLS" (às vezes exibido como "TLS Web Server", mas na verdade não é específico da Web).
-
Para atuar como um cliente, você precisa de um certificado com "TLS Client Authentication" (mais uma vez mostrado como "TLS Web Client", apesar de não ter nada específico da Web).
É bastante comum que os certificados SSL "web server" regulares contenham ambos usos - por exemplo, eu estou olhando para certificados emitidos por Let's Encrypt e DigiCert, e todos eles contêm ambos os usos , portanto, pode ser usado para autenticação de cliente / mútua.
No entanto, é possível que em algumas outras CAs, especialmente CAs de organizações privadas, a maioria dos certificados tenha um uso ou o outro, mas raramente ambos.
Por exemplo, o OpenVPN costumava exigir estritamente " somente TLS Client" (em vez de " pelo menos TLS Client" como outros programas fazem), portanto, seu easy-rsa
o script emite apenas os certificados do servidor e do cliente, mas não o tipo misto.
Portanto, você deve examinar seus certificados e certificar-se de que eles contenham o EKU necessário. Praticamente qualquer ferramenta de certificado fará o trabalho - por exemplo, o diálogo Propriedades do certificado no Windows mostrará isso em "Extensões V3", assim como os navegadores da Web, openssl x509
, certtool
, certutil
, etc.
Também vale a pena lembrar se você executar sua própria autoridade de certificação interna: se você usar um certificado CA intermediário , preste atenção a ela também. Intermediários não são obrigados a ter uma extensão EKU, mas se eles fizerem , então todos os certificados emitidos por aquele intermediário são restringidos por ela. (Se você obtiver os certificados comercialmente, não precisará se preocupar com isso.)
Além disso, o certificado terá um campo básico "Uso da chave", que contém algumas restrições muito gerais: por exemplo, "Assinatura digital" significa que o certificado pode assinar dados (e, portanto, permite o handshake do EDH / EECDH no TLS); "Acordo-chave" parece ser para estática-DH / ECDH; "Key Encrypting" permite handshakes RSA estáticos.
A documentação oficial do X.509v3 é muito confusa em quais usos são necessários quando ... As CAs comerciais geralmente acertam este campo. Mas para CAs particulares vale a pena verificar novamente.