Objetivo
Neste documento iremos descrever como configurar SSL, mudando de uma chave auto-assinada (self-signed) para um certificado válido (gratuito) através de uma CA (Certificate Authorities). Se você estiver executando um ambiente de maior produção, com muitos usuários, você vai querer pegar uma chave de uma empresa como a VeriSign (deve ser comprado), assim a chave-raiz já vem padrão nos navegadores, não precisando ser importado a chave-raiz manualmente em cada navegador de cada usuário. Este documento também pode ser utilizado como ponto inicial para solucionar problemas de conexões SSL.
Público-alvo
Este documento é destinado ao uso por administradores do OpMon que possuam conhecimento prático de como configurar e usar Linux e Apache. Administradores precisam estar familiarizados com editor de texto Vim e arquivos de configuração. Para as utilizações mais pequenas, as chaves SSL auto-assinadas, porém fica gerando alertas nos navegadores, conforme a imagem abaixo.
IE9 (exemplo de alerta)
Firefox 14.0.1 (exemplo de alerta)
Solução
1) Pré-requisitos
Possuir uma conta na CAcert (http://cacert.org).
Ter o nome registrado no DNS do cliente, tipo: opmon.opservices.com.br, ou outro.
O OpMon precisar ser acessível externamente na porta TCP 443, não somente para a OpServices, mas para a CAcert para validar o certificado. Caso contrário teremos a mensagem abaixo, mostrando que foi rejeitado.
2) Gerando uma chave
Primeira coisa que você deve fazer é gerar a chave. Para isso, acesse o OpMon através de SSH e siga os passos mostrados a seguir:
a) Acesse o diretório padrão de configuração do Apache.
[root@opmon]# cd /etc/httpd/conf.d
b) Criando uma chave (Key) privada
[root@opmon]# openssl genrsa -out opmon.key 2048 Generating RSA private key, 2048 bit long modulus ..........................+++ ......................................................+++ e is 65537 (0x10001)
c) Criando um certificado CRS (Certificate Signing Request). Note que os itens marcados em vermelho devem ser de acordo com o cliente onde está sendo gerado o certificado, não devem ser usadas as informações abaixo para uso em outro cliente. Preferencialmente uso o Hostname do DNS do cliente, conforme mencionado nos pré-requisitos.
[root@opmon conf.d]# openssl req -new -key opmon.key -out opmon.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]:RS Locality Name (eg, city) [Newbury]:Porto Alegre Organization Name (eg, company) [My Company Ltd]:OpServices S.A. Organizational Unit Name (eg, section) []:OPERACAO Common Name (eg, your name or your server's hostname) []:opmon.opservices.com.br Email Address []:email@opservices.com.br Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:opservices An optional company name []:OpServices
3) Obtendo o Certificado SSL Acesse a url http://cacert.org/account.php?id=10, cole todo o conteúdo da chave opmon.csr recém criada, e clique no botão “Enviar”, conforme a imagem abaixo:
Se tudo estiver correto, deve aparecer uma informação semelhante a esta, confirme os dados e clique “Enviar”
O resultado será o certificado válido do servidor, conforme exemplo abaixo. Copie o conteúdo do certificado criptografado e cole em um novo arquivo /etc/httpd/conf.d/opmon.crt
4) Configurando o Certificado no OpMon
Edite o arquivo /etc/httpd/conf.d/ssl.conf e altere as entradas conforme abaixo
SSLCertificateFile /etc/httpd/conf.d/opmon.crt SSLCertificateKeyFile /etc/httpd/conf.d/opmon.key
Depois reinicie o Apache, se tudo der certo, as mensagens abaixo devem aparecer
[root@conf.d]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
Tudo certo, e agora?
Após concluído o processo de configuração no servidor, é preciso instalar o certificado no navegador, caso ainda não exista CA da CAcert, clique aqui para entender um pouco mais.