Geração de Certificados¶
Para a geração e configuração do Certificado Digital, o seu servidor web deve possuir o utilitário OpenSSL instalado.
Instalar o pacote openssl:¶
# apt-get install openssl # cd /etc/apache2/ssl
A geração do CSR é divido em duas etapas: geração da chave privada e geração do CSR.
Geração da Chave Privada¶
1. Crie ou acesse o diretório onde será criado o par de chaves e execute o seguinte comando:
# openssl genrsa -out rsa.key.pem 2048
O comando vai gerar a chave privada no arquivo rsa.key.pem, mantenha este arquivo no seu servidor e não compartilhe com ninguém.
Faça uma cópia de segurança da sua chave privada, uma vez que não é possível recuperá-la em caso de perda.
A chave privada será utilizada juntamente com a chave do certificado que iremos emitir.
Geração do CSR¶
No mesmo diretório execute o seguinte comando:
# openssl req -new -key rsa.key.pem -out dominio.csr.pem
Observe que você pode substituir a palavra "dominio" por um nome que facilite sua identificação. (Ex. expresso.pr.gov.br.csr.pem).
Após executar o comando, responda as perguntas:
Country Name: BR State or Province Name: Seu estado por extenso e sem abreviações. Locality Name: Sua cidade. Organization: Nome oficial da empresa, igual ao existente no cartão do CNPJ. Organizational Unit: Departamento ou setor da empresa. Common Name: url do dominio onde o certificado vai ser utilizado. (ex.: expresso.pr.gov.br) Email Address: Não informe nada, deixe em branco. A challenge password: Não informe nada, deixe em branco. An optional company name: Não informe nada, deixe em branco.
O CSR foi criado e armazenado no arquivo dominio.csr.pem, copie todo o seu conteúdo e cole no formulário de pedido do certificado digital.
Geração com um Comando Apenas¶
Os resultados anteriores também podem ser produzidos com uma única chamada de comando, que irá gerar a chave privada e também o certificado:
# openssl req -new -nodes -newkey rsa:2048 -keyout rsa.key.pem -out dominio.csr.pem
Exemplo para o caso do certificado do Expresso:
# openssl req -newkey rsa:2048 -nodes -keyout rsa.key.pem -out expresso.pr.gov.br.csr.pem
Dados de domínio do Expresso:
Country Name: BR
State or Province Name: Parana
Locality Name: Curitiba
Organization Name: Companhia de Tecnologia da Informacao e Comunicacao do Parana
Organizational Unit Name: Gerencia de Servicos de Rede
Common Name: expresso.pr.gov.br
Email Address:
A challenge password:
An optional company name:
Passando os dados por linha de comando:
openssl -subj '/C=BR/ST=Parana/L=Curitiba/O=Companhia de Tecnologia da Informacao e Comunicacao do Parana/OU=Gerencia de Servicos de Rede/CN=expresso.pr.gov.br' ...
Para Ver os Dados do Certificado¶
# openssl req -noout -text -in dominio.csr.pem
Criar a chave pública a partir da chave privada¶
# openssl rsa -in rsa.key.pem -pubout > pub.key.pem
Geração de Certificados Autoassinados¶
Gerar a chave e certificado:
# openssl genrsa -out rsa.key.pem 2048 # openssl req -new -key rsa.key.pem -x509 -out dominio.crt.pem -days 1825
No arquivo /etc/apache2/sites-available/ssl (ou outro que possua virtual host 443):
Load Module ssl_module SSLEngine On SSLCertificateFile /etc/apache2/ssl/dominio.crt.pem SSLCertificateKeyFile /etc/apache2/ssl/rsa.key.pem SSLCACertificatePath /etc/apache2/ssl SSLCACertificateFile /etc/apache2/ssl/dominio.crt.pem SSLProtocol -ALL +TLSv1.1 +TLSv1.2 +SSLv3
No arquivo /etc/apache2/ports.conf:
Listen 443
Para redirecionar a porta 80 para 443:
No arquivo /etc/apache2/sites-available/default (ou outro que possua virtual host 80):
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Reciclar o servidor web:
invoke-rc.d apache2 restart
Geração de Certificados Autoassinados (com suporte a subjectAltName)¶
Criar um arquivo de configuração de nomes: domain_alias.cnf¶
A) Certificado usando DNS fixos:
[ ext_alt_names ] nsCertType = server keyUsage = digitalSignature,nonRepudiation,keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer subjectAltName = @alt_names [ alt_names ] DNS.1 = mail.expresso.celepar.parana DNS.2 = www.expresso.celepar.parana DNS.3 = redmine.expresso.celepar.parana
B) Certificado usando wildcard:
[ ext_alt_names ] nsCertType = server keyUsage = digitalSignature,nonRepudiation,keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer subjectAltName = DNS:*.expresso.celepar.parana
Gerar os certificados:¶
# openssl genrsa -out rsa.key.pem 2048 # openssl req -new -key rsa.key.pem -out expresso.celepar.parana.csr.pem # openssl x509 -req -in expresso.celepar.parana.csr.pem -signkey rsa.key.pem -extfile domain_alias.cnf -extensions ext_alt_names -days 1825 -out expresso.celepar.parana.crt.pem
Outros procedimentos com chaves público-privadas¶
Atualização de SHA256 no expressodev:¶
# openssl genrsa -out rsa.key.pem 2048 # openssl req -new -sha256 -key rsa.key.pem -out expressodev.celepar.parana.csr.pem -subj '/C=BR/ST=Parana/L=Curitiba/O=Companhia de Tecnologia da Informacao e Comunicacao do Parana/OU=Gerencia de Servicos de Rede/CN=expressodev.celepar.parana' # openssl x509 -sha256 -req -in expressodev.celepar.parana.csr.pem -signkey rsa.key.pem -extfile domain_alias.cnf -extensions ext_alt_names -days 1825 -out expressodev.celepar.parana.crt.pem
Gerar par de chaves para um usuário¶
Entrar na pasta .ssh do usuário. Ex: /home/viani/.ssh # ssh-keygen -t rsa O resultado será a geração de dois arquivos: id_rsa e id_rsa.pub