Informática Numaboa - Linux
Debian + Postfix + PostfixAdmin + SquirrelMail
Sab 16 Mai 2009 01:19 |
- Detalhes
- Categoria: Como fazer instalações
- Atualização: Quinta, 28 Janeiro 2010 21:08
- Autor: vovó Vicki
- Acessos: 59434
- Debian + Postfix + PostfixAdmin + SquirrelMail
- A lista de fontes
- Iptables e logcheck
- MySQL, Postfix e Dovecot
- Certificados SSL (Autoridade)
- Certificados SSL (Requisições)
- phpMyAdmin
- SquirrelMail e PostfixAdmin
- SquirrelMail e PostfixAdmin II
- SquirrelMail e PostfixAdmin III
- Configurar SASL e TLS
- Amavis e SpamAssassin
- Amavis, SpamAssassin, ClamAV, Razor, Pyzor
- Amavis
- Amavis II
- Tabelas Bayes e AWL
- Personalizar o SquirrelMail
- Razor, pflogsumm e BIND
- Configurações Postfix adicionais
- Férias no PostfixAdmin
- Quotas, MailGraph e mysql-zrm
- O problema dos Aliases
- Todas as Páginas
Muito bem, somos uma Autoridade Certificadora (CA) e podemos assinar nossos próprios certificados. Pois então vamos criar uma requisição para um certificado da CA. Qualquer pessoa que se conectar ao nosso servidor vai se conectar ao nome de host desta máquina. O servidor Secure Web, servidor Secure IMAP, servidor Secure POP e o servidor Postfix Secure SMTP serão todos nome_do_host.exemplo.com. Por este motivo, o Common Name PRECISA SER nosso nome de host FQDN quando criarmos a requisição. O Organisation name precisa ser o mesmo que consta no certificado CA. Não indique seu endereço de email, challenge password ou um optional company name quando gerar o CSR (certificate signing request - requisição de assinatura de certificado):
openssl req -new -nodes -out req.pem
Country Name BR State or Province Name Parana Locality Name Curitiba Organisation Name Minha Empresa Ltda Organisational Unit Name Servidor WebMail Common Name (eg, YOUR name) nome_do_host.exemplo.com Email Address
Este processo também produz dois arquivos, uma chave privada em privkey.pem e uma requisição de assinatura de certificado em req.pem. Estes arquivos deveriam ser guardados. A chave privada será necessária para a encriptação SSL. Vamos fazer um backup destes aquivos com nomes mais descritivos:
cp -i privkey.pem privkey.nome_do_host.exemplo.com.pem chmod 600 privkey.* cp -i req.pem req.nome_do_host.exemplo.com.pem
Assine 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 cópia do certificado em demoCA/newcerts/ com o nome xx.pem, onde xx é um número de série. Vamos copiar o cert com um nome mais descritivo. O certificado contém a versão codificada e a versão legível, tudo no mesmo arquivo. Queremos eliminar a porção legível:
mv -i cert.pem temp.cert.nome_do_host.exemplo.com.pem openssl x509 -in temp.cert.nome_do-host.exemplo.com.pem -out cert.pem cp -i cert.pem cert.nome_do_host.exemplo.com.pem
O Postfix e o Dovecot vão pedir o cert e a chave em dois arquivos separados, o apache2 vai solicitar os dois combinados (mas pode usar dois arquivos separados se for configurado para isto).
cat privkey.nome_do_host.exemplo.com.pem cert.nome_do_host.exemplo.com.pem >key-cert.pem cp -i key-cert.pem key-cert.nome_do_host.exemplo.com.pem chmod -R 600 /root/CA
Despois destes passos você tem três elementos instaláveis (além de mais algumas cópias descritivas):
- Uma chave privada em privkey.pem (com uma cópia chamada privkey.nome_do_host.exemplo.com.pem)
- Um certificado em cert.pem (e a cópia cert.nome_do_host.exemplo.com.pem)
- Uma chave privada combinada com o certificado em key-cert.pem (cuja cópia é key-cert.nome_do_host.exemplo.com.pem)
Está na hora de dar uma cópia do certificado combinado para o Apache2. Vamos configurar nome_do_host.exemplo.com no Apache2 para que use o /etc/apache2/key-cert.nome_do_host.exemplo.com.pem:
/etc/init.d/apache2 stop /etc/init.d/apache2 start
cd /root/CA/ cp key-cert.nome_do_host.exemplo.com.pem /etc/apache2/ chmod 600 /etc/apache2/key-cert.nome_do_host.exemplo.com.pem
Agora vamos configurar o Apache2. Primeiro habilitamos o módulo SSL, como também o módulo rewrite para, opcionalmente, podermos redirecionar as requisições feitas para a porta 80 para a porta 443:
a2enmod ssl a2enmod rewrite
Vamos fazer uma cópia do site default. Esta cópia será usada na configuração 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@localhost DocumentRoot /var/www/
para:
<VirtualHost *:80> ServerAdmin webmaster@exemplo.com ServerName nome_do_host.exemplo.com DocumentRoot /var/www/
Edite também /etc/apache2/sites-available/ssl
vi /etc/apache2/sites-available/ssl
e mude
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/
para:
<VirtualHost *:443> ServerAdmin webmaster@exemplo.com ServerName nome_do_host.exemplo.com SSLEngine on SSLCertificateFile /etc/apache2/key-cert.nome_do_host.exemplo.com.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, então não deve receber mensagens de erro quando baixar e levantar o Apache2. Agora eu sugiro que você adicione uma entrada no arquivo hosts do seu computador pessoal, por exemplo, 111.111.111.111 nome_do_host.exemplo.com, ou que crie um registro A na sua zona no servidor DNS apropriado (o que, mais hora, menos hora, precisa ser feito de qualquer forma). A esta altura você deveria conseguir navegar tanto com http://nome_do_host.exemplo.com como com https://nome_do_host.exemplo.com. A página web default diz apenas "It works!".
A esta altura do campeonato eu optei por inserir uma entrada no arquivo hosts na minha máquina local com o sistema Windows XP. Só para constar, este arquivo está em /seu_diretório_do_windows/system32/drivers/etc/hosts. Edite-o e aí é só mandar bala.
Habilitamos a porta 80 apenas para facilitar as coisas. Na verdade, não queremos que os usuários façam conexão sem usar SSL, por isso vamos configurar um redirecionamento. Isto é opcional, porém é altamente recomendado. Edite /etc/apache2/sites-available/default mais uma vez
vi /etc/apache2/sites-available/default
e insira estes itens adicionais no ponto mostrado:
<VirtualHost *:80> RewriteEngine on RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R] RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 2
Depois, reinicie o Apache2:
/etc/init.d/apache2 restart
Despois desta alteração, se você fechar o browser, abri-lo novamente e chamar http://nome_do_host.exemplo.com, você vai ser redirecionado para o site SSL (observe a troca de http por https no endereço e o cadeado no rodapé do browser). Isto custa um pouquinho por que dois processos são requeridos para manter as duas portas, a 80 e a 443. A grande vantagem é que nenhum dos usuários precisa se lembrar de usar https://. Aliás, costumo usar lsof -P | grep LISTEN para mostrar as portas que estão em uso.
Se você quiser hospedar múltiplos sites http com múltiplos certificados, deixo para você a tarefa de desvendar como fazer isto. O que posso adiantar é que você pode criar e assinar quantos certificados quiser, apenas certifique-se de não criar um novo certificado de autoridade (CA). A autoridade certificadora, apenas uma e única, pode assinar todos os certificados. Pelo que eu saiba, se mais de um site usar SSL, cada um deles vai precisar de um endereço IP diferente. O Google é seu amigo. Para deixar as coisas bem claras, você pode hospedar tantos domínios de email quantos quiser, mas nesta configuração todos eles são acessados através de uma, e apenas uma, interface http. Mas vamos continuar que ainda tem muita coisa pela frente...
Faça o backup e substitua o certificado e a chave do Dovecot:
mv /etc/ssl/certs/dovecot.pem /etc/ssl/certs/dovecot.pem.backup cp cert.nome_do_host.exemplo.com.pem /etc/ssl/certs/dovecot.pem mv /etc/ssl/private/dovecot.pem /etc/ssl/private/dovecot.pem.backup cp privkey.nome_do_host.exemplo.com.pem /etc/ssl/private/dovecot.pem chmod 0600 /etc/ssl/private/dovecot.pem /etc/init.d/dovecot restart
Informe o Postfix onde encontrar os certificados (e aproveite para configurar alguns parâmetros TLS adicionais). Também faremos um backup do main.cf antes de modificá-lo pela primeira vez:
cp -i /etc/postfix/main.cf /etc/postfix/main.cf-17mai2009
postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem" postconf -e "smtpd_tls_key_file = /etc/ssl/private/dovecot.pem" postconf -e "smtpd_tls_CAfile = /etc/ssl/certs/cacert.exemplo.com.pem" postconf -e "smtpd_tls_received_header = yes" postfix reload
Executando alguns destes comandos uma segunda vez tem como resultado sobre-escrever chaves e certificados, e isto pode não ser bom. Alguns arquivos serão sobre-escritos se certificados adicionais forem requisitados, assinados e criados. Isto é o esperado e também o motivo pelo qual fazemos cópias específicas para os hosts de tudo à medida que avançamos. Apenas tome cuidado para não sobre-escrever qualquer arquivo host-específico que tenha sido criado e lembre-se: é preciso criar apenas um Certificado de Autoridade raiz. Faça um backup da sessão, no próprio servidor e fora dele (na sua máquina local ou num pendrive - sugiro usar o WinSCP):
cp -r /root/CA /root/CA-17mai2009