quinta-feira, 27 de outubro de 2011

Geração de chave e certificado para Apache SSL

Como muitos dos meus artigos citarão a necessidade de um Apache com SSL, resolvi escrever uma dica de como gerar tanto a chave como o certificado rapidamente no Linux. Com exceção da instalação do mod_ssl, específica aqui para CentOS/RedHat e Fedora, todos esses comandos podem ser utilizados em qualquer sistema que tenha OpenSSL com Apache.


O primeiro passo é gerar a chave privada com o OpenSSL:

root@bt:~# openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
.........+++
.........+++
e is 65537 (0x10001)

Com esses parametros, será gerada uma chave privada sem senha, já que não queremos digitar uma senha toda vez que o Apache foi iniciado. É importante que apenas o root tenha acesso de leitura e escrita ao arquivo (chmod 600 server.key), evitando que outros usuários do servidor a copiem. Esta chave será utilizada para assinar o certificado, já que não utilizaremos uma CA (Certificate Authority).

O segundo passo será gerar a requisição do certificado para ser assinado pela própria chave acima (popularmente chamado de self-signed certificate):

[root@bt ~]# openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]: BR
State or Province Name (full name) [Berkshire]:SP
Locality Name (eg, city) [Newbury]:Sao Paulo
Organization Name (eg, company) [My Company Ltd]:Empresa
Organizational Unit Name (eg, section) []:TI
Common Name (eg, your name or your server's hostname) []:www.empresa.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


Os campos em vermelho destacados acima podem ser preenchidos conforme sua necessidade. Uma atenção deve ser dada apenas ao campo Common Name, onde é importante colocar o mesmo nome DNS cadastrado do servidor Web.

Esses campos posteriormente poderão ser verificados no certificado SSL ao acessar o servidor via browser. Após geração da requisição (arquivo CSR), precisamos agora assiná-lo com nossa chave:

[root@bt ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=BR/ST=SP/L=Sao Paulo/O=Empresa/OU=TI/CN=www.empresa.com
Getting Private key

A linha acima cria um certificado server.crt com 3650 dias de validade, ou seja, 10 anos. Agora, você já possui os dois arquivos necessários para subir o Apache com SSL: server.crt e server.key. Copie-os para os diretórios /etc/pki/tls/certs e /etc/pki/tls/private respectivamente (ou qualquer outro diretório que prefira) e modifique as variáveis abaixo no seu arquivo de configuração SSL do Apache, no nosso caso o /etc/httpd/conf.d/ssl.conf:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
Caso você ainda não possua o mod_ssl instalado, digite "yum install mod_ssl" como root para instalar e ativar o módulo mod_ssl com a configuração padrão do Apache 2.2. Será criado o arquivo ssl.conf citado acima no diretório /etc/httpd/conf.d, com todas as configurações já necessárias. Em outras distribuições, um arquivo ssl semelhante será criado no diretório de configurações do Apache, basta procurar e modificar.

Apenas as duas variáveis acima precisarão ser alteradas com a chave e o certificado criado, pois a configuração padrão utiliza a chave privada já presente no sistema, assim como o certificado, que são os arquivos localhost.crt e localhost.key existentes nos diretórios /etc/pki/tls/certs e /etc/pki/tls/private respectivamente.

Após as configurações, reinicie o Apache e o SSL já estará funcionando com o novo certificado gerado. Verifique as informações citadas acima em vermelho através das propriedades do certificado no browser para confirmar o uso dos arquivos corretos.


Um comentário:

  1. Bom,queria falar que me recomendaram esse blog é bom demais,ja li esse post varias vezes e outros,é sempre bom ver recomendações,ouvir falar que tem um site bom ai de rastreamento um tal de http://rastreamento.org alguem ja ouviu falar?sabe me falar se é bom?parabens pelo blog,posta mais por favor!! fuuui

    ResponderExcluir