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.
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.
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.
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
.
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.
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:
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.
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>.