Autoridade Certificadora com Linux

O que é uma autoridade certificadora?

As autoridades certificadores emitem certificado para diversos serviços. O objetivo é aumentar a segurança da interação do cliente para o servidor, esses certificados não só criptografa a comunicação mas também é utilizado para validar a autenticidade dessa comunicação.


A criação da CA

Inicialmente, instale o OpenSSL:
# apt-get install openssl
A seguir, vá para o diretório /usr/lib/ssl:
# cd /usr/lib/ssl/


Edite o arquivo openssl.cnf e altere os dados da CA. Um exemplo de configuração final (apenas o bloco que interessa):
default_md = sha256 # Caso prefira, utilize sha384 ou sha512.
...
[req]
# Se precisar de criptografia mais forte, utilize 4096 (processamento pesado!).
default_bits = 2048
...
countryName = Country Name (2 letter code)
countryName_default = BR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = AL
localityName = Locality Name (eg, city)
# Esta linha, normalmente, não existe e você deverá criá-la.
localityName_default = Maceio
0.organizationName = Organization Name (eg, company)
0.organizationName_default = TeclaTI
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = Tecla TI
organizationalUnitName_default = Divisao de Informatica
# Esta linha, normalmente, aparece comentada. Remova a cerquilha do seu início.
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, YOUR name)
commonName_max = 64
commonName_default = Autoridade Certificadora do Tecla TI
# Esta linha, normalmente, não existe e você deverá criá-la.
emailAddress = Email Address
emailAddress_max = 64
emailAddress_default = admin@teclati.com
# Esta linha, normalmente, não existe e você deverá criá-la.


A seguir, entre no diretório misc:
# cd misc

Finalmente, ainda dentro de /usr/lib/ssl/misc, crie a CA. Para isso, utilize o comando:
# ./CA.pl -newca

Importante: Antes de pressionar ENTER altere para outro terminal crie o arquivo serial com o conteúdo 01 para que a CA possa criar mais de um certificado.
# echo "01">> /usr/lib/ssl/misc/demoCA/serial
  • CA certificate filename (or enter to create): simplesmente pressione ENTER
  • Enter PEM pass phrase: digite uma frase-senha segura (algo com, pelo menos, 10 caracteres).
  • Nos campos em que aparecer as informações anteriormente configuradas pressione ENTER, a não ser que deseje digitar algo diferente.
  • A challenge password []: pressione ENTER.
  • An optional company name []: pressione ENTER.
  • Enter pass phrase for ./demoCA/private/cakey.pem: digite a frase-senha que foi criada anteriormente.
Seguindo os passos anteriores, a CA será criada dentro do diretório .demoCA


A criação das chaves

Neste ponto, já tendo uma CA, você poderá criar um par de chaves para utilizar em um servidor de rede ou para fornecer para um usuário.
Para criar um par de chaves, dentro do diretório /usr/lib/ssl/misc, execute:
# ./CA.pl -newreq
Serão feitas algumas perguntas. Responda as mesmas de acordo com os dados do serviço, da máquina ou da pessoa que irá utilizar o certificado gerado. A frase-senha solicitada será específica para esta chave e deverá ter, no mínimo, 4 caracteres. A seguir, um exemplo de configuração:
Country Name (2 letter code) [BR]: responda com ENTER
State or Province Name (full name) [AL]:SP
Locality Name (eg, city) [Maceio]:Sao Paulo
Organization Name (eg, company) [TeclaTI]: responda com ENTER
Organizational Unit Name (eg, section) [Divisao de Informatica]:Servico ao Cliente
Common Name (eg, YOUR name) [Autoridade Certificadora do TeclaTI]:www.teclati.com.br
Email Address [ca@boasorte.com.br]:webmaster@teclati.com.br
Observe que em Common Name foi colocado o endereço do site, da mesmo forma como será digitado pelo cliente no navegador. Se fosse um servidor de e-mail, por exemplo, bastaria colocar o seu nome (o mesmo inserido no DNS e utilizado pelos clientes).

Deixe em branco A challenge password e An optional company name. Serão criados os seguintes arquivos:
  • newkey.pem: contém a chave privada.
  • newreq.pem: contém a chave pública.

A assinatura de um certificado pela CA

Para assinar um certificado, dentro do diretório /usr/lib/ssl/misc, com o arquivo newreq.pem presente, digite:
# ./CA.pl -sign
Será pedida a frase-senha da chave privada da CA para que seja realizada a assinatura. No fim, será criado o arquivo newcert.pem, certificado que conterá a chave pública assinada. 

O certificado raiz

Será necessário disponibilizar o certificado raiz (que é o certificado da CA) para download, pois os usuários precisarão instalar tal certificado nos seus programas de e-mail, browsers etc. O certificado raiz é o arquivo /usr/lib/ssl/misc/demoCA/cacert.pem. Renomeie-o para teclati.crt e disponibilize-o em um site para download. 


Tornando a chave privada insegura (apenas para chaves a serem utilizadas em servidores de rede)

Caso a chave privada venha a ser utilizada em servidores, a mesma deverá estar sem senha. Isso ocorre porque o servidor não sabe trabalhar com senhas e, se não removermos essa senha, a cada a acesso de cliente a mesma será solicitada (chave privada).
Para remover a senha da chave privada, criando uma chave privada insegura, execute o comando:
# openssl rsa -in newkey.pem -out key.pem
Será solicitada a frase-senha da chave privada em questão. O arquivo key.pem que será gerado conterá a chave privada já sem a senha. Você deverá utilizar os arquivos key.pem e newcert.pem, além do certificado raiz, para configurar os seus servidores de rede. 

2 comentários: