Další vecí kterou si odzkoušíme je autentizace obou stran pomocí certifikátů. Proto si ale nejdříve zmíněné certifikáty musíme vytvořit. Postupujeme podle návodu [xref linkend="openssl.cert"/]. Pokud nemáme certifikační autoritu, nebo si je nechceme pro tento účel vytvářet, můžeme certifikáty podepsat sebou místo certifikační autoritou. T.j. každý certifikát je podepsán sam sebou. Popíšeme si případ s certifikační autoritou.
FIXME: Vytvoříme si certifikační autoritu. Výsledkem jsou soubory:
cacert.pem
— veřejný certifikátcrl.pem
— ?revokační seznam?FIXME: Poté vytvoříme certifikát pro server pikachu
. Výsledkem budou soubory:
pikachu.key
— soukromý klíč, zůstává jen na serverupikachu.pem
— veřejný certifikát, publikujemepikachu.p12
— pro MSWindowsFIXME: A na konec vytvoříme certifikát pro klienta jirkanb
. Výsledkem jsou soubory:
Výsledkem jsou soubory:
jirkanb.key
— soukromý klíč, zůstává jen na klientovijirkanb.pem
— veřejný certifikát, publikujemejirkanb.p12
— pro MSWindows
A ještě jeden certifikát pro dalšího klienta.
mpressca@yoda:~$ CA -newreq ⋮ Enter PEM pass phrase:********
←heslo k vytvářenému certifikátu Verifying password - Enter PEM pass phrase:********
←a ještě jednou ⋮ Country Name (2 letter code) [CZ]:CZ
State or Province Name (full name) []:.
Locality Name (eg, city) []:Breclav
Organization Name (eg, company) [Moje Firma, s.r.o.]:FIRMA a.s.
Organizational Unit Name (eg, section) []:IT Departement
Common Name (eg, YOUR name) []:trada.firma.cz
Email Address []:vladislav.tvaruzek@firma.cz
⋮ A challenge password []:<Enter>
An optional company name []:<Enter>
Request (and private key) is in newreq.pem mpressca@yoda:~$CA -sign
⋮ Enter PEM pass phrase:********
heslo ke klíči certifikační autority Check that the request matches the signature Signature ok The Subjects Distinguished Name is as follows countryName :PRINTABLE:'CZ' localityName :PRINTABLE:'Breclav' organizationName :PRINTABLE:'FIRMA a.s.' organizationalUnitName:PRINTABLE:'IT Departement' commonName :PRINTABLE:'trada.firma.cz' emailAddress :IA5STRING:'vladislav.tvaruzek@firma.cz' Certificate is to be certified until Dec 13 14:16:27 2005 GMT (365 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
⋮ Signed certificate is in newcert.pem mpressca@yoda:~$mv newreq.pem trada.key
mpressca@yoda:~$mv newcert.pem trada.pem
mpressca@yoda:~$openssl pkcs12 -export -in trada.pem -inkey trada.key \ -certfile demoCA/cacert.pem -out trada.p12
Enter PEM pass phrase:********
heslo k certifikátu Enter Export Password:<Enter>
Verifying password - Enter Export Password:<Enter>
mpressca@yoda:~$
Tím máme všechny klíče vytvořeny. Teď je umístníme na server a klienta a opravíme konfiguraci. Na server umístníme soubory: cacert.pem
, crl.pem
, pikachu.key
, ?pikachu.pem
?, jirkanb.pem
, trada.pem
.
pikachu:/etc/racoon# ls -l certs
total 28
-rw-r--r-- 1 root root 1281 Dec 13 13:47 cacert.pem
-rw-r--r-- 1 root root 516 Dec 13 13:47 crl.pem
-rw-r--r-- 1 root root 3702 Dec 13 13:47 jirkanb.pem
-rw------- 1 root root 1696 Dec 13 13:47 pikachu.key
-rw------- 1 root root 2941 Dec 13 13:47 pikachu.p12
-rw-r--r-- 1 root root 3702 Dec 13 13:47 pikachu.pem
-rw-r--r-- 1 root root 3711 Dec 13 15:20 trada.pem
pikachu:/etc/racoon#
Na klienta zase soubory: cacert.pem
, crl.pem
, jirkanb.key
, ?jirkanb.pem
?, pikachu.pem
.
Na klienta trada
uložíme soubory: cacert.pem
, crl.pem
, trada.key
, ?trada.pem
?, pikachu.pem
.
Pro potřeby VPN budeme ještě potřebovat
mpressca@yoda:~$ openssl x509 -in demoCA/cacert.pem -noout -subject
subject= /C=CZ/L=Breclav/O=FIRMA a.s./OU=IT Departement/CN=Radek Hnilica/Email=ca@firma.cz
mpressca@yoda:~$