27.2.6.7. Další pokus s WinXP

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í