Autoridade Certificadora com Linux
Autor: Renato | Publicado: 2017-03-15T12:30:00-03:00


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&nbsp;/usr/lib/ssl:
# cd /usr/lib/ssl/






Edite o arquivo&nbsp;openssl.cnf&nbsp;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&nbsp;:-)

#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&nbsp;misc:

# cd misc




Finalmente, ainda dentro de&nbsp;/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"&gt;&gt; /usr/lib/ssl/misc/demoCA/serial


CA certificate filename (or enter to create):&nbsp;simplesmente pressione&nbsp;ENTER


Enter PEM pass phrase:&nbsp;digite uma frase-senha segura (algo com, pelo menos, 10 caracteres).
Nos campos em que aparecer as informações anteriormente configuradas pressione&nbsp;ENTER, a não ser que deseje digitar algo diferente.
A challenge password []:&nbsp;pressione&nbsp;ENTER.
An optional company name []:&nbsp;pressione&nbsp;ENTER.
Enter pass phrase for ./demoCA/private/cakey.pem:&nbsp;digite a frase-senha que foi criada anteriormente.




Seguindo os passos anteriores, a CA será criada dentro do diretório&nbsp;.demoCA.&nbsp;




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&nbsp;/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&nbsp;A challenge password&nbsp;e&nbsp;An optional company name. Serão criados os seguintes arquivos:

newkey.pem:&nbsp;contém a chave privada.
newreq.pem:&nbsp;contém a chave pública.




A assinatura de um certificado pela CA

Para assinar um certificado, dentro do diretório&nbsp;/usr/lib/ssl/misc, com o arquivo&nbsp;newreq.pem&nbsp;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&nbsp;newcert.pem, certificado que conterá a chave pública assinada.&nbsp;



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&nbsp;/usr/lib/ssl/misc/demoCA/cacert.pem. Renomeie-o para&nbsp;teclati.crt&nbsp;e disponibilize-o em um site para download.&nbsp;




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&nbsp;key.pem&nbsp;que será gerado conterá a chave privada já sem a senha. Você deverá utilizar os arquivos&nbsp;key.pem&nbsp;e&nbsp;newcert.pem, além do certificado raiz, para configurar os seus servidores de rede.&nbsp;