Vous êtes sur la page 1sur 5

Criar e Instalar Certificados SSL

Qualquer cliente que se conectar ao nosso servidor precisa ser capaz de resolver o nome de host do servidor. Adicione uma entrada no seu arquivo /etc/hosts ou um registro A no seu servidor DNS para que possamos interagir adequadamente com o servidor. claro que, uma hora qualquer, tambm ser preciso criar um ou mais registros MX. Ns vamos ser nossa prpria Autoridade Certificadora (CA) e assinar (autenticar) nossos prprios certificados. Para fazer isto, os comandos dependem do /etc/ssl/openssl.cnf fornecido pelo Debian. Vamos comear fazendo uma pequena modificao neste arquivo de configurao para que, por default, nossos certificados tenham validade de 10 anos ao invs de apenas 1 ano: sed -i 's/= 365\t/= 3653\t/' /etc/ssl/openssl.cnf grep 365 /etc/ssl/openssl.cnf

Agora vamos criar um lugar comum para colocar todos os nossos certificados: cd /root mkdir CA cd CA mkdir demoCA cd demoCA mkdir newcerts mkdir private echo '01' > serial touch index.txt cd ..

Sabendo onde coloc-lo, vamos criar um Certificado raiz: openssl req -new -x509 -extensions v3_ca -keyout demoCA/private/cakey.pem -out cacert.pem -days 3653 Quando solicitado, entre com uma frase-senha (passphrase). Voc vai precisar desta frasesenha logo mais, portanto, crie uma frase senha nica e nunca a perca. Responda as perguntas que forem sendo feitas. No se esquea de escrever o nome do estado por extenso e de criar um nome comum (Common Name) que descreva a sua autoridade: Country Name BR State or Province Name Distrito Federal

Locality Name Brasilia Organisation Name IESB Organisational Unit Name Servidor Web Common Name (eg, YOUR name) IESB - Autoridade Certificadora Email Address webmaster@iesb.br Este processo produz dois arquivos: uma chave privada em demoCA/private/cakey.pem e um certificado raiz CA em cacert.pem. Todo e qualquer arquivo com chave que criarmos precisa ser protegido contra acessos no autorizados e no pode ser perdido nos prximos 10 anos. A CA que acabamos de criar pode assinar quantos certificados quisermos (at que perca sua validade depois de 10 anos). Vamos copiar este certificado e sua chave para arquivos com nomes mais descritivos: cp -i chmod cp -i cp -i demoCA/private/cakey.pem demoCA/private/cakey.iesb.br.pem 600 demoCA/private/* cacert.pem cacert.iesb.br.pem cacert.pem cacert.iesb.br.crt

Agora copiamos o certificado CA raiz para /usr/share/ca-certificates/self: mkdir /usr/share/ca-certificates/self cp -i cacert.iesb.br.crt /usr/share/ca-certificates/self/ O passo seguinte rodar dpkg-reconfigure ca-certificates, responder yes para "Trust new certificates from certificate authorities?", descer at encontrar self/cacert.iesb.br.crt, usar a barra de espao para selecion-la, Tab at Ok e digitar Enter para terminar o trabalho. Isto vai criar um sym-link para o nosso certificado CA em /etc/ssl/certs: dpkg-reconfigure ca-certificates O cacert.iesb.br.pem e o cacert.iesb.br.crt so cpias do nosso certificado e so os arquivos que podem ser distribudos e instalados nas mquinas clientes. Clientes Windows devem usar o arquivo .crt. Muito bem, somos uma Autoridade Certificadora (CA) e podemos assinar nossos prprios certificados. Pois ento vamos criar uma requisio para um certificado da CA. Qualquer pessoa que se conectar ao nosso servidor vai se conectar ao nome de host desta mquina. O servidor Secure Web, todos www.xpto.com.br. Por este motivo, o Common Name PRECISA SER nosso nome de host FQDN quando criarmos a requisio. O Organisation name precisa ser o mesmo que consta no certificado CA. No indique seu endereo de email, challenge password ou um optional company name quando gerar o CSR (certificate signing request - requisio de assinatura de certificado): openssl req -new -nodes -out req.pem Country Name BR

State or Province Name Distrito Federal Locality Name Braslia Organisation Name IESB Organisational Unit Name laboratorio Common Name (eg, YOUR name) www.lab.iesb.br Email Address: webmaster@iesb.br Este processo tambm produz dois arquivos, uma chave privada em privkey.pem e uma requisio de assinatura de certificado em req.pem. Estes arquivos deveriam ser guardados. A chave privada ser necessria para a encriptao SSL. Vamos fazer um backup destes aquivos com nomes mais descritivos: cp -i chmod cp -i Assine privkey.pem privkey.nome_do_host.exemplo.com.pem 600 privkey.* req.pem req.lab.iesb.br.pem o Certificado ( aqui que voc precisa da sua frase-senha):

openssl ca -out cert.pem -cert cacert.pem -infiles req.pem Este processo atualiza a base de dados da CA e produz dois arquivos, um certificado em cert.pem e uma cpia do certificado em demoCA/newcerts/ com o nome xx.pem, onde xx um nmero de srie. Vamos copiar o cert com um nome mais descritivo. O certificado contm a verso codificada e a verso legvel, tudo no mesmo arquivo. Queremos eliminar a poro legvel: mv -i cert.pem temp.cert.lab.iesb.br.pem openssl x509 -in temp.cert.lab.iesb.br.pem -out cert.pem cp -i cert.pem cert.lab.iesb.br.pem

O apache2 vai solicitar os dois combinados (mas pode usar dois arquivos separados se for configurado para isto). cat privkey.lab.iesb.br.pem cert.lab.iesb.br.pem >key-cert.pem cp -i key-cert.pem key-cert.lab.iesb.br.pem chmod -R 600 /root/CA Depois destes passos voc tem trs elementos instalveis (alm de mais algumas cpias descritivas): Uma chave privada em privkey.pem (com uma cpia chamada privkey.lab.iesb.br.pem) Um certificado em cert.pem (e a cpia cert.lab.iesb.br.pem) Uma chave privada combinada com o certificado em key-cert.pem (cuja cpia keycert.lab.iesb.br.pem) Est na hora de dar uma cpia do certificado combinado para o Apache2. Vamos configurar www.lab.iesb.br no Apache2 para que use o /etc/apache2/key-cert.lab.iesb.br.pem: /etc/init.d/apache2 stop

/etc/init.d/apache2 start cd /root/CA/ cp key-cert.lab.iesb.br.pem /etc/apache2/ chmod 600 /etc/apache2/key-cert.lab.iesb.br.pem

Agora vamos configurar o Apache2. Primeiro habilitamos o mdulo SSL, como tambm o mdulo rewrite para, opcionalmente, podermos redirecionar as requisies feitas para a porta 80 para a porta 443: a2enmod ssl a2enmod rewrite Vamos fazer uma cpia do site default. Esta cpia ser usada na configurao do site SSL: cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl Agora edite /etc/apache2/sites-available/default vi /etc/apache2/sites-available/default e mude <VirtualHost *:80> ServerAdmin webmaster@lab.iesb.br DocumentRoot /var/www/ para: <VirtualHost *:80> ServerAdmin webmaster@lab.iesb.br ServerName www.lab.iesb.br DocumentRoot /var/www/ Edite tambm /etc/apache2/sites-available/ssl vi /etc/apache2/sites-available/ssl e mude <VirtualHost *:80> ServerAdmin webmaster@lab.iesb.br DocumentRoot /var/www/ para: <VirtualHost *:443> ServerAdmin webmaster@lab.iesb.br ServerName www.lab.iesb.br SSLEngine on SSLCertificateFile /etc/apache2/key-cert.lab.iesb.br.pem DocumentRoot /var/www/ Depois de editados os arquivos, habilite o novo site que chamamos de ssl e reinicie o

Apache2: a2ensite ssl /etc/init.d/apache2 stop /etc/init.d/apache2 start Se voc fez tudo direitinho, ento no deve receber mensagens de erro quando baixar e levantar o Apache2. A esta altura voc deveria conseguir navegar tanto com http://www.lab.iesb.br como com https://www.lab.iesb.br. A pgina web default diz apenas "It works! Com as configuraes atuais do /etc/apache2/apache2.conf, os arquivos que controlam acessos (arquivos como o .htpasswd) no sero usados, a menos que informemos ao apache2 para que os use. Vamos modificar o arquivo de controle de acesso original. htpasswd -c /etc/apache2/htpasswd nome_usurio New password: senha Re-type new password: senha Agora vamos fazer com que o apache2 use este arquivo de acesso colocando diretivas em /etc/apache2/000-default. Quando isto estiver feito, as chamadas para o diretrio /protegido vo receber uma caixa de dilogo de login. nano /etc/apache2/conf.d/phpmyadmin.conf e insira o seguinte na posio mostrada, certificando-se de que o endereo IP seja o endereo IP da sua estao de trabalho (como o servidor de email a v). Se preferir, voc pode colocar um ou mais dos ltimos octetos do endereo IP para permitir que uma gama maior de hosts possa acessar o prompt de login do phpMyAdmin. Mesmo assim, eles vo precisar passar pelas duas camadas de segurana. Alias /protegido /home/aluno/protegido <Directory /home/aluno/protegido/> order deny,allow deny from all AuthUserFile /etc/apache2/htpasswd AuthGroupFile /dev/null AuthName "Acesso Restrito" AuthType Basic Require valid-user Salve o arquivo, depois reinicie o apache2 com o comando service apache2 restart

Vous aimerez peut-être aussi