Projeto

Geral

Perfil

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