14.9. OpenSSL
Précédent | Chapitre 14. Sécurité | Suivant

## 14.9. OpenSSL

Ecrit par Tom Rhodes.

Une des caractéristiques que de nombreux utilisateurs ignorent souvent est la présence des outils OpenSSL dans le système FreeBSD. OpenSSL fournit une couche de transport des données chiffrée par-dessus la couche de communication, lui permettant ainsi d'être liée à de nombreux services et applications réseau.

Les applications d'OpenSSL pourront être l'authentification chiffrée de clients de messagerie, les transactions via le Web comme les paiements par carte bancaire et bien plus encore. De nombreux logiciels portés tels que `www/apache13-ssl`, et `mail/sylpheed-claws` offriront un support pour OpenSSL lors de leur compilation.

### Note:

Dans la plupart des cas le catalogue des logiciels portés tentera de compiler le logiciel porté `security/openssl` à moins que la variable make(1) `WITH_OPENSSL_BASE` ne soit explicitement fixée à la valeur « yes ».

La version d'OpenSSL fournie avec FreeBSD supporte les protocoles de sécurité réseau Secure Sockets Layer v2/v3 (SSLv2/SSLv3), et Transport Layer Security v1 (TLSv1) et peut être utilisée comme bibliothèque de chiffrement d'usage général.

### Note:

Bien que OpenSSL supporte l'algorithme IDEA, il est désactivé par défaut en raison des problèmes de brevets aux USA. Pour l'utiliser, le texte de la licence devrait être consulté et si les termes de cette licence sont acceptables, la variable `MAKE_IDEA` doit être activée dans le fichier `make.conf`.

Une des utilisations les plus courantes d'OpenSSL est de fournir des certificats utilisables avec des applications logicielles. Ces certificats assurent que les références de la société ou d'un individu sont valides et non frauduleuses. Si le certificat en question n'a pas été vérifié par une des nombreuses « autorité de certification » (« Certificate Authorities ») ou CAs, une alerte est généralement produite. Une autorité de certification est une société, comme VeriSign, qui signera les certificats afin de valider les références d'individus ou de sociétés. Ce processus a un coût et n'est pas obligatoire pour utiliser des certificats, cependant cela pourra mettre plus à l'aise les utilisateurs les plus paranoïaques.

### 14.9.1. Générer des certificats

Pour générer un certificat, la commande suivante est disponible:

`#` `openssl req -new -nodes -out req.pem -keyout cert.pem` Generating a 1024 bit RSA private key ................++++++ .......................................++++++ writing new private key to 'cert.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) [AU]:``US`` State or Province Name (full name) [Some-State]:``PA`` Locality Name (eg, city) []:``Pittsburgh`` Organization Name (eg, company) [Internet Widgits Pty Ltd]:``My Company`` Organizational Unit Name (eg, section) []:``Systems Administrator`` Common Name (eg, YOUR name) []:``localhost.example.org`` Email Address []:``trhodes@FreeBSD.org`` Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:``SOME PASSWORD`` An optional company name []:``Another Name``

Notez la réponse à la question « Common Name » qui est un nom de domaine. Cette question demande l'entrée d'un serveur de noms à des fins de vérification; entrer autre chose qu'un nom de domaine produira un certificat inutilisable. D'autres options sont disponibles comme par exemple: la date d'expiration, des algorithmes de chiffrement alternatifs, etc. Une liste complète peut être obtenue en consultant la page de manuel openssl(1).

Deux fichiers doivent maintenant être présents dans le répertoire dans lequel la commande a été exécutée. La demande de certificat, `req.pem`, peut être envoyée à une autorité de certification qui validera les références que vous avez saisies, signera la demande et vous retournera le certificat. Le deuxième fichier s'appellera `cert.pem` et sera la clé privée du certificat et devra être à tout prix protégée; si ce fichier tombe dans d'autres mains, il pourra être utilisé pour imiter votre identité (ou votre serveur).

Pour les cas où une signature d'une CA n'est pas indispensable, un certificat auto-signé peut être créé. Générez tout d'abord la clé RSA:

`#` `openssl dsaparam -rand -genkey -out `myRSA.key` 1024`

Générez ensuite la clé de la CA:

`#` `openssl gendsa -des3 -out `myca.key` `myRSA.key``

Utilisez cette clé pour créer le certificat:

`#` `openssl req -new -x509 -days 365 -key `myca.key` -out `new.crt``

Deux fichiers devraient être présents maintenant dans le répertoire: un fichier de signature de l'autorité de certification, `myca.key`, et le certificat lui-même, `new.crt`. Ces fichiers doivent être placés dans un répertoire, de préférence sous `/etc`, qui est uniquement lisible que par `root`. Les permissions 0700 devraient convenir et peuvent être fixées à l'aide de l'utilitaire `chmod`.

### 14.9.2. Utilisation des certificats, un exemple

A quoi peuvent servir ces fichiers? Un bon exemple serait le chiffrage des connexions au MTA sendmail. Cela permettra de faire disparaître l'utilisation d'une authentification en clair pour les utilisateurs qui envoient du courrier via le MTA local.

### Note:

Ce n'est pas la meilleure utilisation au monde étant donné que certains clients de messagerie afficheront une erreur si le certificat n'a pas été installé localement. Reportez-vous à la documentation du logiciel pour plus d'information sur l'installation de certificats.

Les lignes suivantes doivent être ajoutées dans le fichier `.mc` local:

dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/new.crt')dnl define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl

Où `/etc/certs/` est le répertoire à utiliser pour stocker localement les certificats et les clés. La dernière condition nécessaire étant une reconstruction du fichier `.cf`. Cela se fait facilement en tapant `make` `install` à l'intérieur du répertoire `/etc/mail`. Suivi d'un `make` `restart` qui devrait relancer le « daemon » sendmail.

Si tout s'est bien passé il n'y aura pas de message d'erreur dans le fichier `/var/log/maillog` et sendmail apparaîtra dans la liste des processus.

Comme test simple, connectez vous au serveur de messagerie à l'aide de l'utilitaire telnet(1):

`#` `telnet `example.com` 25` Trying 192.0.34.166... Connected to `example.com`. Escape character is '^]'. 220 `example.com` ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) `ehlo `example.com`` 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP `quit` 221 2.0.0 `example.com` closing connection Connection closed by foreign host.

Si la ligne « STARTTLS » apparaît dans la sortie, cela signifie alors que tout fonctionne correctement.

Précédent | Niveau supérieur | Suivant
14.8. Kerberos5 ** Traduction en Cours ** | Sommaire | 14.10. IPsec

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.