Tutoriais | Comunidade Brasileira
Certificados de Servidor com OpenSSL
Certificados de Servidor são utilizados para estabelecer serviços seguros na internet, utilizando-se das tecnologias SSL e TLS.
Este documento visa esclarecer todos os passos a serem seguidos para a criação e manutenção das chaves e certificados, utilizando OpenSSL. O uso destes certificados e chaves por programas diversos é além do escopo deste documento.
Introdução
Um Certificado Digital é composto de uma chave pública, uma assinatura digital da Autoridade Certificadora, identificação dos usos autorizados, identificação do portador, entre outros detalhes.
Um certificado de servidor é emitido, autenticando um CommonName, que representa um nome máquina completo (FQDN), e opcionalmente SubjectAltNames, ou nomes alternativos, para casos em que um servidor é acessado por diversos endereços. IMPORTANTE: NUNCA UTILIZAR UM ÚNICO CERTIFICADO PARA SERVIÇOS DE DUAS ORGANIZAÇÕES DIFERENTES. Isto pode trazer sérios riscos legais à organização portadora do certificado.
Exemplo: Apresentação básica de um certificado:
$ openssl x509 -in server.pem -text Certificate: Data: Version: 3 (0x2) Serial Number: 00000 (0x00000) Signature Algorithm: md5WithRSAEncryption Issuer: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org Validity Not Before: May 24 16:50:53 2005 GMT Not After : May 24 16:50:53 2007 GMT Subject: CN=www.exemplo.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00: ... 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00: 00:00 Exponent: 000000 (0x00000) X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE X509v3 Extended Key Usage: TLS Web Client Authentication, TLS Web Server Authentication, Netscape Server Gated Crypto, Microsoft Server Gated Crypto X509v3 Key Usage: Digital Signature, Key Encipherment Authority Information Access: OCSP - URI:http://ocsp.cacert.org
Peculiaridades da CAcert
A CAcert elimina todos os campos não essenciais da requisição de certificado (permanecendo apenas CommonName e SubjectAltName), e preenche novamente os campos conforme os dados presentes no banco de dados da CAcert, pois isto elimina grandes chances de inconsistências na criação de certificados.
Portanto, uma requisição de certificado precisa conter apenas o CommonName e os SubjectAltNames desejados, simplificando o processo para o usuário. Na próxima seção, será apresentado um modo bastante automático para a emissão da requisição.
Criando a Chave Privada e a Requisição de Certificado
Obtenha o script csr-br disponível em www.cacert.org e execute em um ambiente seguro.
Confira localização dos arquivos a serem gravados pelo script, e altere se necessário. Confira também a umask em efeito no ambiente, pois uma umask mal formulada pode deixar os arquivos legíveis a outros usuários. A obtenção do arquivo de chave privada por outro usuário invalida totalmente a segurança do sistema.
Caso tenha dúvidas quanto ao valor da umask, utilize o comando umask 077 antes de executar o script.
- Execute o script csr-br, preenchendo todos os campos requisitados
- Acessar o site www.CAcert.org, selecionar Certificado de Servidor, novo
- Colar o conteudo do CSR no campo designado, e escolher qual certificado raiz a ser usado
- Conferir as informações na tela, e prosseguir para obter o certificado
- Copiar o certificado e colar em um arquivo de sua preferência