Zdroje a odkazy:
Vytvoření certifikátů provedem následujícím postupem. Začneme nejdříve vytvořením certifikační autority. Vytvoříme si tedy klíč ca.key
a žádost o certifikát ca.req
.
$ openssl req -new -nodes -newkey rsa:1024 -sha1 -keyout ca.key -out ca.req
Poté žádost o certifikát podepíšeme vytvořeným klíčem. T.j. certifikát certifikační autority je podepsán klíčem té samé autority.
$ openssl x509 -req -days 9999 -in ca.req -signkey ca.key -out ca.crt
Tím máme hotovu certifikační autoritu. Jedná se o soubory: ca.crt
, ca.key
. Certifikát ca.crt
bude distribuován na jednotlivé stanice/routery/server a klíč ca.key
si pečlivě uschováme.
Nyní si vytvoříme certifikáty pro jednotlivé stroje. Uvádím příklad vytvoření certifikátu pro stroj pikachu
. Vytvoříme klíč a žádost o certifikát
$ openssl req -new -nodes -newkey rsa:1024 -sha1 -keyout pikachu.key \
-out pikachu.req
Žádost o certifikát pikachu.req
podepíšeme certifikační autoritou a získáme certifikát stroje pikachu.crt
.
$ openssl x509 -req -days 370 -in pikachu.req -out pikachu.crt \
-CA ca.crt -CAkey ca.key -CAcreateserial
U dalších strrojů postupujeme obdobně. Pro stroje s Windows XP ještě zabalíme všechny požadované certifikáty do „pkcs 12“ balíčku.
$ openssl pkcs12 -export -in jirka.crt -inkey jirka.key -certfile ca.crt \
-out jirka.p12
Vytvořený balíček certifikátů je v souboru jirka.p12
. Tento přeneseme na stanici a naimportujeme.
Poznámky: openssl req -neq -nodes -newkey rsa:1024 -sha1 -keyform PEM -keyout ca.key -outform PEM -out ca.req Vytvoření klíče a žádosti o certifikát certifikační autority. Na Linuxovem routeru nakopirujeme pikachu.crt pikachu.key a ca.crt # ln -s ca.crt $(openssl x509 -noout -hash -in ca.crt).0
Jiný způsob podepisování certifikátů. Vyžaduje vytvořit prostředí certifikační autority. Žádost o certifikát autority podepíšeme klíčem autority.
$ openssl ca -policy policy_anything -out ca.crt -infiles ca.req
Na straně Linuxového serveru jsou nainstalovány balíčky
pikachu:/etc/racoon# dpkg -l ipsec-tools racoon
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=========================-=========================-=======================
ii ipsec-tools 0.3.3-0.backports.org.1 IPsec tools for Linux
ii racoon 0.3.3-0.backports.org.1 IPSEC IKE keying daemon
Na straně serveru/routeru je konfigurace uložena v adresáři /etc/racoon/
. Konfigurace na straně serveru v souboru racoon.conf
.
# Konfigurace s pouzitim certifikatu log debug2; path certificate "/etc/racoon/certs"; listen { isakmp 212.96.165.122; } remote anonymous { exchange_mode main,base,aggressive; generate_policy on; passive off; doi ipsec_doi; situation identity_only; lifetime time 24 hour; # min/hour my_identifier asn1dn; peers_identifier asn1dn; certificate_type x509 "pikachu.crt" "pikachu.key"; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method rsasig; dh_group modp1024; } } sainfo anonymous { pfs_group modp1024; lifetime time 1 hour; # min/hour encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }
Skrip pro inicializaci SA databáze v souboru /etc/racoon/spd.conf
:
#!/usr/sbin/setkey -f # pikachu:/etc/racoon/ipsec.conf # Spojeni s yoghurt,jirkanb,trada ### Flush all flush; spdflush; ### Security Policy ### jirka .firma.cz # TRANSPORT MODE #spdadd 212.96.165.122 212.96.165.121 any -P out ipsec # esp/transport//require; #spdadd 212.96.165.121 212.96.165.122 any -P in ipsec # esp/transport//require; # TUNNEL MODE spdadd 10.16.64.0/19 10.225.64.0/19 any -P out ipsec esp/tunnel/10.16.66.53-10.225.64.3/require; spdadd 10.225.64.0/19 10.16.64.0/19 any -P in ipsec esp/tunnel/10.225.64.3-10.16.66.53/require; spdadd 212.96.165.122 212.96.165.121 any -P out ipsec esp/tunnel/212.96.165.122-212.96.165.121/require; spdadd 212.96.165.121 212.96.165.122 any -P in ipsec esp/tunnel/212.96.165.121-212.96.165.122/require; # trada.firma.cz from gprs: 160.218.179.137 spdadd 212.96.165.122 160.218.179.137 any -P out ipsec esp/transport//require; spdadd 160.218.179.137 212.96.165.122 any -P in ipsec esp/transport//require; # trada.firma.cz from lan: 212.96.165.120/28 spdadd 212.96.165.122 212.96.165.120 any -P out ipsec esp/transport//require; spdadd 212.96.165.120 212.96.165.122 any -P in ipsec esp/transport//require;
A restartujeme:
pikachu:/etc/racoon#/etc/init.d/racoon stop
Stopping IKE (ISAKMP/Oakley) server: racoon. pikachu:/etc/racoon#./spd.conf
pikachu:/etc/racoon#/etc/init.d/racoon start
Starting IKE (ISAKMP/Oakley) server: racoon. pikachu:/etc/racoon#
FIXME: Popsat konfiguraci na straně Windows XP.
Konfigurace je v souboru .
conn roadwarrior-net left=%any right=212.96.165.122 rightsubnet=10.0.0.0/8 rightca="C=CZ, L=Breclav, O=FIRMA a.s., OU=IT Departement, \ CN=pikachu.firma.cz, E=sprava.site@firma.cz" network=auto auto=start pfs=yes
Nepodaří se navázat spojení. Na straně serveru se objeví v deníku následující:
Dec 21 09:21:50 pikachu racoon: DEBUG: anonymous configuration selected for 212.96.165.121[500]. Dec 21 09:21:50 pikachu racoon: DEBUG: === Dec 21 09:21:50 pikachu racoon: INFO: respond new phase 1 negotiation: 212.96.165.122[500]<=>212.96.165.121[500] Dec 21 09:21:50 pikachu racoon: INFO: begin Identity Protection mode. ⋮ Dec 21 09:42:58 pikachu racoon: DEBUG: resend phase1 packet b09491a5d9e18873:73020e8c7209fb6b Dec 21 09:42:58 pikachu racoon: DEBUG: === Dec 21 09:42:58 pikachu racoon: DEBUG: 56 bytes message received from 212.96.165.121[500] to 212.96.165.122[500] Dec 21 09:42:58 pikachu racoon: DEBUG: b09491a5 d9e18873 73020e8c 7209fb6b 0b100500 4eab84e5 00000038 0000001c \ 00000001 01100004 b09491a5 d9e18873 73020e8c 7209fb6b Dec 21 09:42:58 pikachu racoon: DEBUG: receive Information. Dec 21 09:42:58 pikachu racoon: ERROR: ignore information because the message has no hash payload. Dec 21 09:43:08 pikachu racoon: DEBUG: 153 bytes from 212.96.165.122[500] to 212.96.165.121[500] Dec 21 09:43:08 pikachu racoon: DEBUG: sockname 212.96.165.122[500] Dec 21 09:43:08 pikachu racoon: DEBUG: send packet from 212.96.165.122[500] Dec 21 09:43:08 pikachu racoon: DEBUG: send packet to 212.96.165.121[500] Dec 21 09:43:08 pikachu racoon: DEBUG: src4 212.96.165.122[500] Dec 21 09:43:08 pikachu racoon: DEBUG: dst4 212.96.165.121[500] Dec 21 09:43:08 pikachu racoon: DEBUG: 1 times of 153 bytes message will be sent to 212.96.165.122[500] ⋮ Dec 21 09:43:08 pikachu racoon: DEBUG: receive Information. Dec 21 09:43:08 pikachu racoon: ERROR: ignore information because the message has no hash payload. Dec 21 09:43:18 pikachu racoon: ERROR: phase1 negotiation failed due to time up. b09491a5d9e18873:73020e8c7209fb6b
Uvedenou chybu
Dec 21 09:42:58 pikachu racoon: ERROR: ignore information because the message has no hash payload.
popisují