1. Curso Técnico de Manutenção e Suporte em Informática
Segurança da Informação
Prof. Leandro Almeida
Certificação Digital – Criando uma Autoridade Certificadora
OBS: Este roteiro foi gentilmente cedido pelo Professor Dênio Mariz.
1. Preparativos iniciais
Usaremos a ferramenta OpenSSL para gerar um par de chaves pública e privada e para
gerar um certificado digital para uma Autoridade Certificadora. Após isso iremos assinar
requisições de certificados de clientes.
Para instalar o OpenSSL:
# aptget install openssl
Vamos configurar o ambiente para nossa CA:
# cd /opt
# mkdir CA
# cd CA
# mkdir newcerts private
# echo '01' > serial
# touch index.txt
Devemos criar fazer o download do arquivo openssl.cnf do site do professor com o
comando:
# wget http://dl.dropbox.com/u/22560647/iDEZ/CTMSI/Seguran
%C3%A7a%20da%20Informa%C3%A7%C3%A3o/openssl.cnf
2. Criando um par de chaves
Para criar a chave privada digite:
# openssl genrsa des3 out private/CA.key 1024
As opções indicam o seguinte:
2. -genrsa indica ao OpenSSL que voce quer gerar um par de chaves
-des3 indica que a chave privada deve ser criptografada. Vai pedir uma password e vai
cifrar o arquivo que contém a chave privada com o algoritmo 3DES (-aes128 usaria o
algoritmo AES).
-out indica onde salvar a chave privada
1024 indica o número de bits da chave gerada
Você pode verificar a chave criada com o comando:
# openssl rsa text in private/CA.key | more
Agora vamos gerar a chave pública com o comando:
# openssl rsa –in private/CA.key –pubout –out CA.pub
3. Criando um certificado raiz
Para criar um certificado raiz, use o comando:
# openssl req new x509 –key private/CA.key extensions
v3_ca out CA_RAIZ.pem days 3650
As opções são as seguintes:
-new -x509 pede para criar um novo certificado no formato X.509
-extensions v3_ca indica extensão necessária para criar um certificado raiz
-days 3650 indica a validade do certificado (10 anos)
-out indica o nome do arquivo que conterá o certificado
Você pode vizualizar o certificado com o comando:
# openssl x509 in CA_RAIZ.pem noout text | more
4. Criando um pedido de assinatura de certificado(Certificate Signing Request – CSR)
Um Pedido de Assinatura de Certificado (CSR) é um conjunto de informações de um
cliente que são enviados para um Certificate Authority (CA) para serem assinadas, ou seja, para
queseja criado um certificado para esse cliente.
Aqui, faremos o papel do cliente solicitante e também do certificador. Ou seja,
geraremos um CSR e depois nós mesmo assinaremos. Normalmente, um cliente não é
também um certificador e, nesses casos, ele enviaria o CSR para um certificador e receberia o
certificado.
Assuma que somos um cliente e queremos criar um certificado para um site na web.
Então vamos criar um pedido de assinatura de um certificado (CSR) para o site
www.SEUNOME.com.br com o comando:
# openssl req new nodes out www.SEUNOME.csr –keyout
www.SEUNOME.key
O arquivo www.SEUNOME.csr contém o CSR que deve ser enviado para o Certificador.
3. O arquivo www.SEUNOME.key contém a chave privada do cliente e deve ser mantida
em segredo pelo cliente.
5. Criando um certificado a partir de um CSR(ou assinando um certificado)
Agora assuma que somos a autoridade certificadora e que recebemos o CSR do cliente
(gerado no item anterior). Vamos criar o certificado para o cliente solicitante
(www.SEUNOME.com.br) com o comando:
# openssl ca –out www.SEUNOME.pem –keyfile private/CA.key –
cert CA_Raiz.pem –config openssl.cnf –infiles www.SEUNOME.csr
As opções são as seguintes:
ca subcomando do openssl para geração de certificados
-out o nome do certificado a ser gerado
-keyfile indica o arquivo contendo a chave privada do certificador
-cert indica o arquivo contendo o certificado raiz do certificador
-config indica o nome do arquivo de configuração (com outras opções e defaults)
-infiles os arquivos contendo os CSR a serem assinados
6. Testando o certificado
Vamos simular um servidor WWW usando o OpenSSL. Ele ficará escutando na porta
4433 uma conexão e estabelecerá uma conexão SSL quando um browser contactá-lo. Para
isso, digite o comando:
# openssl s_server –cert www.SEUNOME.pem –www –key
www.SEUNOME.key
Agora abra um browser na mesma máquina e acesse o seguinte URL:
https://localhost:4433 . Voce pode acessar de um browser em outra máquina, usando a URL
https://IP:4433, onde IP é o endereço IP do host que está rodando o openssl s_server.