next up previous contents
Next: 7.4 演習問題 Up: 7.3.3 IKEの設定 Previous: 7.3.3.1 racoonの設定

7.3.3.2 公開鍵を使った方法

事前共有鍵を使ったracoonの設定はセキュリティ的には問題がありますし、 かなり面倒であると言えます。本来は、PKIでは認証局(CA)があり、そこで 公開鍵を手に入れるようにするのですが、登録には費用が発生します。 一方、自分でCAを立てる方法もありますが、CAを立てるのはそれなりに面倒 です。そこで、ここでは OpenSSLの機能を使って、CAを使わない公開鍵暗号 のみを使って認証をしてみることにします。

まず、OpenSSLのパッケージを導入します。 OpenSSLは securityカテゴリにあります。

     openssl-0.9.7e_2

インストールが出来たら、適当なディレクトリで以下のコマンドを実行します。

     # openssl req -new -nodes -newkey rsa:1024 -sha1 -keyform PEM -keyout
       s001.private -outform PEM -out s001.pem

Generating a 1024 bit RSA private key
...............++++++
..........................++++++
writing new private key to 's001.private'
-----
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]:JP
State or Province Name (full name) [Some-State]:Hokkaido
Locality Name (eg, city) []:Wakkanai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Wakhok
Organizational Unit Name (eg, section) []:Wakhok
Common Name (eg, YOUR name) []:wakhok.ac.jp
Email Address []:staff@wakhok.ac.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:test
An optional company name []:

すると、以下のようにカレントディレクトリにプライベート鍵と、 証明書が出来ます。

    # ls
    s001.pem   s001.private

次に、これに署名します。

# openssl x509 -req -in s001.pem -signkey s001.private -out s001.public
Signature ok
subject=/C=JP/ST=Hokkaido/L=Wakkanai/O=Wakhok/OU=Wakhok/CN=wakhok.ac.jp/emailAdd
ress=staff@wakhok.ac.jp
Getting Private key

すると、s001.public という公開鍵が出来ました。

この公開鍵をIPsecでつなぎたい相手においてもらいます。 同時に、相手の公開鍵も相手から送ってもらい、これを以下のディレクトリに おきます。

    # mkdir /usr/local/etc/racoon/certs
    # chmod og-rwx   /usr/local/etc/racoon/certs
    # cp s001.public /usr/local/etc/racoon/certs
    # cp s002.public /usr/local/etc/racoon/certs
    # cp s001.private /usr/local/etc/racoon/certs
    # chmod og-rwx  /usr/local/etc/racoon/certs/s001.private

ここでは、s001.publicとs001.private が自分の公開鍵と秘密鍵で、 s002.public がつなぎたい相手のの公開鍵です。従って、相手には s002.public,s002.private,s001.public がないといけません。

さて、この公開鍵を用いたracoonの設定が次のものです。

# search this file for pre_shared_key with various ID key.
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
path certificate    "/usr/local/etc/racoon/certs" ;

remote 2001:2f8:43:a002::7750 {
        exchange_mode aggressive,main;
        my_identifier asn1dn;
	peers_identifier asn1dn;
	certificate_type x509 "s001.public" "s001.private";
	peers_certfile "s002.public";
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method  rsasig;
                dh_group 2 ;
        }
}

sainfo anonymous
{
        pfs_group 2;
        lifetime time 12 hours ;
        encryption_algorithm 3des ;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate ;
}

ほとんど先程の racoon.conf と変わりませんが、認証を変えたのと、 それに関する部分が変更されます。勿論、上記の path certificate の 行から、remote のディレクティブを先の racoon.conf に付け加えても 構いません。(勿論、事前共有鍵方式が必要なければ以前の設定は削除すれば 良いでしょう。)

相手側の方でも同じように設定をしますが、自分の鍵と相手の鍵を間違えない ようにしないといけません。

なお、公開鍵の交換はメイルでも構いませんし、ウェブにリンクを張っても 構わないでしょう(まあ完全公開のページというのも嫌なら、秘密のページでも 良いでしょう)。 相手から送られてきた公開鍵が正しいかどうかは、MD5の値などをお互いに 計算して、やはりウェブのページにでもやはり掲載すればよいでしょう(本来は 電話か郵便の方が確かです)。



Noriyo Kanayama