Connexions segures al teu servidor

Publication date
11/05/2005
Categories
, , ,

La idea és poder accedir als serveis del nostre servidor mitjançant connexions encriptades, com per exemple, llegir el correu web a través d'una WiFi sense encriptar sense preocupar-nos de que ens el puguin llegir.

Per fer-ho crearem un certificat amb l'OpenSSL i configurarem els serveis perquè l'utilitzin. Més avall hi veuràs les instruccions de com fer-ho pel servidor web Apache, el servidor de correu POP3/IMAP Dovecot i pel servidor de correu SMTP Postfix.

Aquesta recepta està pensada per màquines que corrin alguna distribució basada en Debian. Tot i així no hauria de ser molt complicat adaptar-ho a qualsevol altra sistema Unix.

Tingues en compte també que et faran falta permisos de super-usuari per poder fer el que s'explica aquí.

Crear la clau privada i el certificat

  1. Creem el directori on guardarem la clau privada i el certificat:

    # mkdir -p /var/local/ssl/el-meu-domini
    # cd /var/local/ssl/el-meu-domini

    Canvia el-meu-domini pel domini del servidor o la seva IP pública.

    Realment pots guardar els fitxers que crearem on vulguis. Si és així assegura't de canviar les rutes per les correctes.

  2. Creem la clau privada:

    # openssl genrsa -out private-key.pem 2048

    Si algú tingués accés a aquest fitxer es podria fer passar per nosaltres. Per tant, un cop creada la clau ens hem d'assegurar que només la puguin llegir els processos que realment ens interessen.

    Com que tant l'Apache, el Dovecot i el Postfix utilitzen l'usuari root per executar els seus procesos principals podem fer que només aquest usuari els pugui llegir:

    # chmod 600 private-key.pem
  3. Creem el certificat:

    # openssl req -new -x509 -key private-key.pem -out ca-certificate.pem -days 365

    Aquí se'ns demanarà algunes dades. Pots posar-hi el que vulguis però quan pregunti pel Common Name assegura't de posar-hi el nom del domini o la IP que utilitzaràs per accedir al servidor.

    El certificat serà vàlid durant un any (podeu canviar el -days 365 per un altre valor). Quan caduqui el certificat només cal crear-ne un altre executant de nou aquesta comanda (sobreescrivint el fitxer).

    Com que el certificat sí que és públic ens assegurem que qualsevol usuari el pugui llegir:

    # chmod 644 ca-certificate.pem

    Tingues en compte que com que el certificat està signat per nosaltres mateixos i no per un CA reconegut el programa que accedeixi al servidor (el navegador, el client de correu, ...) ens demanarà si hi confiem (normalment només es mostra la primera vegada que hi accedim si acceptem).

    La forma "normal" d'obtenir un certificat és crear un certificate request i enviar-lo a un CA (com ara Thawte o VeriSign) perquè el signi. L'avantatge és que com que la majoria de programes confien en aquestes entitats ja no es mostra el missatge d'advertència. Però com que que et signin el certificat no és gratuït (ni barat) si només l'hem d'utilitzar nosaltres mateixos o dins d'una intranet en tenim prou amb un certificat auto-signat.

Per més informació sobre aquest procés pots mirar-te el HOWTO de l'OpenSSL.

Habilitar les connexions segures al servidor web Apache

Per capturar totes els connexions segures (de l'estil https://el-meu-domini/...) amb l'Apache (versió 2) afegim aquestes línies al fitxer /etc/apache2/apache2.conf:

<IfModule mod_ssl.c>
    Listen 443

    <VirtualHost _default_:443>
        # Posa aquí la configuració per les connexions segures al
        # servidor web (com ara el DocumentRoot o el ServerName)
        ServerName el-meu-domini
        DocumentRoot /var/www

        SSLEngine on
        SSLCertificateKeyFile /var/local/ssl/el-meu-domini/private-key.pem
        SSLCertificateFile /var/local/ssl/el-meu-domini/ca-certificate.pem
    </VirtualHost>
</IfModule>

També haurem de carregar el mòdul SSL:

# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/ssl.* .

Per més informació pots mirar-te la documentació sobre l'encriptació SSL/TLS a l'Apache.

Habilitar les connexions segures al servidor de correu entrant Dovecot

Per habilitar l'accés al correu tant a través d'IMAP com de POP3 ja sigui a través de connexions segures o no afegim aquestes línies al fitxer /etc/dovecot/dovecot.conf:

listen = imap imaps pop3 pop3s
ssl_cert_file = /var/local/ssl/el-meu-domini/ca-certificate.pem
ssl_key_file = /var/local/ssl/el-meu-domini/private-key.pem

Per més informació pots mirar-te la documentació sobre la configuració de Dovecot.

Habilitar les connexions segures al servidor de correu sortint Postfix

Per defecte el Postfix s'executa dins d'un chroot. Aquesta configuració però està pensada per quan està configurat per executar-se directament (un bug en el programa podria comprometre el sistema però és més fàcil de configurar).

Afegim aquestes línies al fitxer /etc/postfix/main.cf:

smtpd_use_tls = yes
smtpd_tls_key_file = /var/local/ssl/el-meu-domini/private-key.pem
smtpd_tls_cert_file = /var/local/ssl/el-meu-domini/ca-certificate.pem

Per més informació pot mirar-te la documentació sobre l'encriptació TLS a Postfix.

Comment this post

Fields marked with * are required.

*
It won't be made public. If you have a gravatar it will be displayed.
*