Een toepassing die bij FreeBSD zit die veel gebruikers over het hoofd zien is OpenSSL. OpenSSL biedt een versleutelde transportlaag bovenop de normale communicatielaag. Daardoor biedt het de mogelijkheid met veel netwerktoepassingen en diensten verweven te raken.
Een aantal toepassingen van OpenSSL zijn versleutelde autenticatie van mailcliënten, webgebaseerde transacties als creditcardbetalingen en nog veel meer. Veel ports zoals www/apache22 en mail/claws-mail bieden tijdens het compileren ondersteuning om OpenSSL in te bouwen.
In de meeste gevallen zal de Portscollectie proberen de
port security/openssl te
bouwen, tenzij de make variabele
WITH_OPENSSL_BASE
expliciet naar
“yes” is gezet.
De versie van OpenSSL die bij FreeBSD zit ondersteunt Secure Sockets Layer v2/v3 (SSLv2/SSLv3), Transport Layer Security v1 (TLSv1) netwerkbeveiligingsprotocollen en kan gebruikt worden als generieke versleutelingsbibliotheek.
Hoewel OpenSSL ondersteuning
biedt voor het IDEA algoritme, is dat
standaard uitgeschakeld in verband met patenten in de Verenigde Staten.
Om het te gebruiken dient de licentie gelezen te worden en, als
de restricties aanvaardbaar zijn, dient de make-variabele
MAKE_IDEA
ingesteld te worden in
make.conf
.
Een van de meest gebruikte toepassingen van OpenSSL is het leveren van certificaten voor gebruik met softwaretoepassingen. Deze certificaten verzekeren dat de eigenschappen van een bedrijf of individu geldig zijn en niet vervalst. Als het certificaat in kwestie niet geldig verklaard is door een van de “Certificate Authorities” of CA's, dan komt er een waarschuwing. Een Certificate Authority is een bedrijf, zoals VeriSign, dat certificaten ondertekent zodat de eigenschappen van een bedrijf of individu geldig verklaard kunnen worden. Dit proces kost geld en het is zeker geen voorwaarde voor het gebruik van certificaten. Het stelt wel de meer paranoïde gebruikers gerust.
Voor het maken van certificaten is het volgende commando beschikbaar:
#
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
Let op dat het antwoord direct na “Common Name” een domeinnaam weergeeft. De prompt wil dat er een servernaam wordt ingegeven voor het verificatieproces. Het plaatsen van iets anders dan een domeinnaam zorgt ervoor dat het certificaat waardeloos wordt. Er zijn ook andere opties als verloopdatum, andere versleutelingsalgoritmes, etc, beschikbaar. Een volledige lijst is na te lezen in de handleiding van openssl(1).
Er horen nu twee bestanden te staan in de map waarin het
voorgaande commando is uitgevoerd. Het certificaatverzoek,
req.pem
, kan naar een certificaat
autoriteit gestuurd worden die de bijgevoegde gegevens kan
valideren, het verzoek kan tekenen en het certificaat kan
retourneren. Het tweede bestand heet
cert.pem
en is de geheime sleutel voor het
certificaat. Deze dient zorgvuldig beschermd te worden. Als
de geheime sleutel in de handen van anderen valt kan die
gebruikt worden om de identiteit van de eigenaar (of server)
aan te nemen.
In gevallen waar ondertekening door een CA niet vereist is, kan een zelfondertekend certificaat gemaakt worden. Maak als eerste de RSA sleutel:
#
openssl dsaparam -rand -genkey -out myRSA.key 1024
Hierna kan de CA sleutel gemaakt worden:
#
openssl gendsa -des3 -out myca.key myRSA.key
Deze sleutel kan gebruikt worden om een certificaat te maken:
#
openssl req -new -x509 -days 365 -key myca.key -out new.crt
Er zouden nu twee bestanden bijgekomen moeten zijn in de
map: een certificaatautoriteit ondertekeningsbestand
myca.key
en new.crt
,
het certificaat zelf. Deze moeten in een map geplaatst worden,
bij voorkeur onder /etc
waar alleen root
kan lezen. De rechten
0700 zijn hier prima en die kunnen ingesteld worden met
chmod
.
En wat kunnen deze bestanden? Een prima toepassing zou het versleutelen van verbindingen naar de Sendmail MTA kunnen zijn. Daardoor zouden gebruikers niet langer platte tekst hoeven te autenticeren om mail te sturen via de lokale MTA.
Dit is niet de best denkbare toepassing omdat sommige MUA's de gebruiker een foutmelding geven als ze het certificaat niet lokaal geïnstalleerd hebben. De documentatie bij de software geeft meer informatie over het installeren van certificaten.
De volgende regels moeten opgenomen worden in het lokale
.mc
bestand:
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
/etc/certs/
is de
map die gebruikt wordt voor het lokaal opslaan van certificaten
en sleutels. De laatste voorwaarde het is opnieuw aanmaken van
het lokale .cf
bestand. Dit gaat door
eenvoudigweg make
install
te typen in de map
/etc/mail
. Laat dat
volgen door make
install
waardoor de daemon
Sendmail herstart zou moeten
worden.
Als alles goed is gegaan, dan staan er geen foutmeldingen
/var/log/maillog
en is
Sendmail zichtbaar in de
proceslijst.
Maak als eenvoudige test een verbinding met de mailserver met telnet(1):
#
telnet example.com 25
Trying 192.0.34.166... Connected toexample.com
. Escape character is '^]'. 220example.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 HELPquit
221 2.0.0example.com
closing connection Connection closed by foreign host.
Als de regel “STARTTLS” verschijnt in de uitvoer dan werkt alles correct.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.