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.reqPoté žá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 -CAcreateserialU 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 daemonNa 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 stopStopping IKE (ISAKMP/Oakley) server: racoon. pikachu:/etc/racoon#./spd.confpikachu:/etc/racoon#/etc/init.d/racoon startStarting 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=yesNepodaří 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:73020e8c7209fb6bUvedenou chybu
Dec 21 09:42:58 pikachu racoon: ERROR: ignore information because the message has no hash payload.
popisují