Geração de certificados auto-assinados

De Infraestrutura São Carlos
Ir para navegação Ir para pesquisar

Objetivo

Descrever a geração de certificados SSL auto-assinados para servidores Ubuntu.

Requisitos

  • Servidor Ubuntu
  • OpenSSL

Procedimentos

  1. Utilize o seguinte comando para gerar a chave privada e o certificado público em um mesmo arquivo:
    # openssl req -x509 -nodes -days 3653 -newkey rsa:4096 -keyout mycert.pem -out mycert.pem
    

    onde:

    • req: aciona o utilitário para geração de certificados.
    • -x509: gera um certificado auto-assinado.
    • -nodes: especifica que a chave privada não será criptografada.
    • -days 3653: especifica a validade, em dias, do certificado (3653 dias ou aproximadamente 10 anos).
    • -newkey rsa:4096: especifica a criação da chave privada RSA com tamanho de 4096 bits.
    • -keyout mycert.pem: especifica o arquivo mycert.pem que irá conter a chave privada.
    • -out mycert.pem: especifica o arquivo mycert.pem que irá conter o certificado público.

    Os seguintes dados serão solicitados:

    • Country Name: Digite, com duas letras, o país (BR).
    • State or Province Name: Digite o nome do estado (Sao Paulo, evite acentuação).
    • Locality Name: Digite o nome da cidade (Sao Carlos).
    • Organization Name: Digite o nome da organização ao qual pertence (Universidade de Sao Paulo).
    • Organizational Unit Name: Digite o nome da unidade inserida na organização (Centro de Informatica de Sao Carlos).
    • Common Name: Digite o endereço do serviço, hostname ou IP que utilizará este certificado (www.cisc.usp.br).
    • Email Address: Digite o endereço eletrônico de contato em caso de problemas no certificado (suporte@sc.usp.br).
  2. Para verificar o conteúdo do arquivo gerado:
    # openssl x509 -text -in mycert.pem
    

    onde:

    • x509: aciona o utilitário para visualização de certificados.
    • -text: imprime o certificado no formato texto.
    • -in mycert.pem: especifica o arquivo mycert.pem que contém o certificado.
  3. Proteja o arquivo gerado:
    # chmod 600 mycert.pem
    
  4. Para que o OpenSSL localize e utilize o certificado corretamente, é necessário que o nome do arquivo que contenha o certificado seja o seu hash com a extensão .0 (ponto zero). Para verificar o hash de um certificado:
    # openssl x509 -noout -hash -in mycert.pem
    

    onde:

    • x509: aciona o utilitário para visualização de certificados.
    • -noout: não gera saída.
    • -hash: imprime o valor do hash.
    • -in mycert.pem: especifica o arquivo de entrada mycert.pem que contém o certificado.
  5. Ao invés de renomearmos o arquivo do certificado, apenas criamos um arquivo simbólico com o hash e a extensão .0:
    # ln -sf mycert.pem `openssl x509 -hash -noout -in mycert.pem`.0
    
  6. Para verificar o funcionamento do certificado pelo OpenSSL:
    # openssl verify -CApath . mycert.pem
    

    Se link simbólico do hash estiver correto, a saída será:

    mycert.pem: OK
    

    Caso contrário, há problemas no hash e as possíveis mensagens de erro poderão ser emitidas:

    • error 10 at 0 depth lookup:certificate has expired: a validade do certificado expirou.
    • error 18 at 0 depth lookup:self signed certificate: o certificado é auto-assinado.

Referências