Gestion des services sendmail dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Configuration de SMTP pour utiliser le protocole TLS

SMTP peut utiliser le protocole TLS (Transport Layer Security) dans la version 8.13 de sendmail. Ce service aux serveurs et clients SMTP fournit des communications privées et authentifiées sur Internet, ainsi qu'une protection contre les écoutes clandestines et les pirates. Notez que ce service n'est pas activé par défaut.

La procédure suivante utilise des données d'exemple pour vous montrer comment configurer les certificats qui permettent à sendmail d'utiliser TLS. Pour plus d'informations, reportez-vous à la section Prise en charge de l'exécution de SMTP avec TLS dans la version 8.13 de sendmail.

  1. Connectez-vous en tant qu'administrateur.

    Pour plus d'informations, reportez-vous à la section A l’aide de vos droits administratifs attribués du manuel Sécurisation des utilisateurs et des processus dans Oracle Solaris 11.2 .

  2. Arrêtez sendmail.
    # svcadm disable -t network/smtp:sendmail
  3. Configurez les certificats qui permettent à sendmail d'utiliser TLS.
    1. Exécutez ce qui suit :
      # cd /etc/mail
      # mkdir -p certs/CA
      # cd certs/CA
      # mkdir certs crl newcerts private
      # echo "01" > serial
      # cp /dev/null index.txt
      # cp /etc/openssl/openssl.cnf .
    2. Utilisez l'éditeur de texte de votre choix pour faire passer la valeur dir située dans le fichier openssl.cnf de /etc/openssl à /etc/mail/certs/CA.
    3. Utilisez l'utilitaire de ligne de commande openssl pour implémenter TLS.

      Notez que la ligne de commande suivante génère du texte interactif.

      # openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 \
      -config openssl.cnf
      Generating a 1024 bit RSA private key
      .....................................++++++
      .....................................++++++
      writing new private key to 'private/cakey.pem'
      Enter PEM pass phrase:
      Verifying - Enter PEM pass phrase:
      -----
      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) []:US
      State or Province Name (full name) []:California
      Locality Name (eg, city) []:Menlo Park
      Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Oracle
      Organizational Unit Name (eg, section) []:Solaris
      Common Name (eg, YOUR name) []:somehost.somedomain.example.com
      Email Address []:someuser@example.com
      req

      Cette commande crée et traite des demandes de certificats.

      –new

      Cette option de req génère une nouvelle demande de certificat.

      –x509

      Cette option de req crée un certificat autosigné.

      –keyout private/cakey.pem

      Cette option de req vous permet d'assigner private/fichier.pem en tant que nom de fichier pour la clé privée que vous venez de créer.

      –out cacert.pem

      Cette option de req vous permet d'assigner cacert.pem en tant que fichier de sortie.

      –days 365

      Cette option de req vous permet d'obtenir le certificat pour 365 jours. La valeur par défaut est 30.

      –config openssl.cnf

      Cette option de req vous permet de spécifier openssl.cnf en tant que fichier de configuration.

        Notez que cette commande requiert que vous fournissiez les informations suivantes :

      • Country Name (nom du pays), comme US.

      • State or Province Name (nom de l'Etat ou de la province), par exemple California.

      • Locality Name (nom de la localité), comme Menlo Park.

      • Organization Name (nom de l'organisation), par exemple Oracle.

      • Organizational Unit Name (nom du service dans l'organisation), comme Solaris .

      • Common Name (nom commun), qui correspond au nom d'hôte complet de la machine. Pour plus d'informations, reportez-vous à la page de manuel check-hostname(1M).

      • Email Address (adresse e-mail), par exemple someuser@example.com.

  4. (Facultatif)Si vous avez besoin d'une nouvelle connexion sécurisée, créez un nouveau certificat et signez-le avec l'autorité de certification.
    1. Créez un certificat.
      # cd /etc/mail/certs/CA
      # openssl req -nodes -new -x509 -keyout newreq.pem -out newreq.pem -days 365 \
      -config openssl.cnf
      Generating a 1024 bit RSA private key
      ..............++++++
      ..............++++++
      writing new private key to 'newreq.pem'
      -----
      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) []:US
      State or Province Name (full name) []:California
      Locality Name (eg, city) []:Menlo Park
      Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Oracle
      Organizational Unit Name (eg, section) []:Solaris
      Common Name (eg, YOUR name) []:somehost.somedomain.example.com
      Email Address []:someuser@example.com

      Cette commande requiert que vous fournissiez les mêmes informations que vous avez fournies à l'étape 3c.

      Notez que dans cet exemple, le certificat et la clé privée se trouvent dans le fichier newreq.pem.

    2. Signez le certificat avec l'autorité de certification.
      # cd /etc/mail/certs/CA
      # openssl x509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
      Getting request Private Key
      Generating certificate request
      # openssl ca -config openssl.cnf -policy policy_anything -out newcert.pem -infiles tmp.pem
      Using configuration from openssl.cnf
      Enter pass phrase for /etc/mail/certs/CA/private/cakey.pem:
      Check that the request matches the signature
      Signature ok
      Certificate Details:
              Serial Number: 1 (0x1)
              Validity
                  Not Before: Jun 23 18:44:38 2005 GMT
                  Not After : Jun 23 18:44:38 2006 GMT
              Subject:
                  countryName               = US
                  stateOrProvinceName       = California
                  localityName              = Menlo Park
                  organizationName          = Oracle
                  organizationalUnitName    = Solaris
                  commonName                = somehost.somedomain.example.com
                  emailAddress              = someuser@example.com
              X509v3 extensions:
                  X509v3 Basic Constraints: 
                      CA:FALSE
                  Netscape Comment: 
                      OpenSSL Generated Certificate
                  X509v3 Subject Key Identifier: 
                      93:D4:1F:C3:36:50:C5:97:D7:5E:01:E4:E3:4B:5D:0B:1F:96:9C:E2
                  X509v3 Authority Key Identifier: 
                      keyid:99:47:F7:17:CF:52:2A:74:A2:C0:13:38:20:6B:F1:B3:89:84:CC:68
                      DirName:/C=US/ST=California/L=Menlo Park/O=Oracle/OU=Solaris/\
                      CN=someuser@example.com/emailAddress=someuser@example.com
                      serial:00
      
      Certificate is to be certified until Jun 23 18:44:38 2006 GMT (365 days)
      Sign the certificate? [y/n]:y
      
      
      1 out of 1 certificate requests certified, commit? [y/n]y
      Write out database with 1 new entries
      Data Base Updated
      # rm -f tmp.pem

      Dans cet exemple, le fichier newreq.pem contient le certificat et la clé privée non signés. Le fichier newcert.pem contient le certificat signé.

      Utilitaire x509

      Affiche les informations sur les certificats, convertit les certificats sous différentes formes et signe les demandes de certificats.

      application ca

      Utilisée pour signer les demandes de certificats sous différentes formes et générer des listes de révocation de certificats (LRC).

  5. Activez sendmail pour utiliser les certificats en ajoutant les lignes suivantes à votre fichier .mc.
    define(`confCACERT_PATH', `/etc/mail/certs')dnl
    define(`confCACERT', `/etc/mail/certs/CAcert.pem')dnl
    define(`confSERVER_CERT', `/etc/mail/certs/MYcert.pem')dnl
    define(`confSERVER_KEY', `/etc/mail/certs/MYkey.pem')dnl
    define(`confCLIENT_CERT', `/etc/mail/certs/MYcert.pem')dnl
    define(`confCLIENT_KEY', `/etc/mail/certs/MYkey.pem')dnl

    Pour plus d'informations, reportez-vous à la section Options du fichier de configuration pour l'exécution de SMTP avec TLS.

  6. Recréez et installez le fichier sendmail.cf dans le répertoire /etc/mail.

    Pour obtenir des instructions détaillées, reportez-vous à la section Modification de la configuration sendmail.

  7. Créez des liens symboliques à partir des fichiers que vous avez créés avec openssl vers les fichiers que vous avez définis dans votre fichier .mc.
    # cd /etc/mail/certs
    # ln -s CA/cacert.pem CAcert.pem
    # ln -s CA/newcert.pem MYcert.pem
    # ln -s CA/newreq.pem MYkey.pem
  8. Pour plus de sécurité, refusez les autorisations en lecture aux groupes (et autres) pour MYkey.pem.
    # chmod go-r MYkey.pem
  9. Utilisez un lien symbolique pour installer des certificats de CA dans le répertoire assigné à confCACERT_PATH.
    # C=CAcert.pem
    # ln -s $C `openssl x509 -noout -hash < $C`.0
  10. Pour un système de messagerie sécurisé avec d'autres hôtes, installez leurs certificats d'hôte.
    1. Copiez le fichier défini par l'option confCACERT de l'autre hôte dans /etc/mail/certs/host.domain.cert.pem.

      Remplacez host.domain par le nom d'hôte complet de l'autre hôte.

    2. Utilisez un lien symbolique pour installer des certificats de CA dans le répertoire assigné à confCACERT_PATH.
      # C=host.domain.cert.pem
      # ln -s $C `openssl x509 -noout -hash < $C`.0

      Remplacez host.domain par le nom d'hôte complet de l'autre hôte.

  11. Redémarrez sendmail.
    # svcadm enable network/smtp:sendmail
Exemple 2-2  En-tête de courrier Received:

Ce qui suit est un exemple de l'en-tête Received: pour le courrier sécurisé avec TLS.

Received: from his.example.com ([IPv6:2001:db8:3c4d:15::1a2f:1a2b])
        by her.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNUB8i242496
        (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
        for <janepc@her.example.com>; Tue, 29 Mar 2005 15:30:11 -0800 (PST)
Received: from her.example.com (her.city.example.com [192.168.0.0])
        by his.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNU7cl571102
        version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
        for <janepc@her.example.com>; Tue, 29 Mar 2005 15:30:07 -0800 (PST)

Notez que la valeur de verify est OK, ce qui signifie que l'authentification a réussi. Pour plus d'informations, reportez-vous à la section Macros pour l'exécution de SMTP avec TLS.

Voir aussi