IPSec は IP の最上位層のプロトコルで、 インターネット上の二つのホストの間にアドホックな暗号化接続を提供するものです。 IPSec の実装は IPv6 では必須で、IPv4 には付け加えることが可能です。 IPSec が IPv6 の一部であると言っても、 ネットワーク管理者から簡単に使えるものだということは意味しません。 IPSec は、マシンの間で自動的に鍵を交換する仕組みを持つ難しさのために、 実装するのが簡単ではありません。 DNS が助けになりますが、これは主流ではありませんし、 よく知られた認証機関は企業での幅広い配備に対して、 適切な証明書の仕組みを未だ配布していません。
FreeS/WAN は IPSec の、 GNU/Linux での人気のある実装です。 その最新のバージョン (1.9.7) では、X.509 を受け入れるためにパッチを あてる必要があります。 このサイトに パッチをあてたバージョンがあります。 GNU/Linux のディストリビューションによってはパッチが既に適用されていますので、 パッケージをチェックしてください。 このバージョンの利点は、FreeS/WAN と DNS CERT のために用いる 証明を生成するのに openssl を使うことができることですが、 さらに具体的に言うと IPSec の Microsoft による実装と うまく通信できるようになります。 さらなる情報については、 Nate のページ を参照してください。
あなたの IPSec ゲイトウェイ(例えば host.example.com) の完全に権限のあるドメイン名を CN にして証明書を生成してください。 証明書に署名するのを忘れないように。 二つのファイル newcert.pem と newreq.pem があることになります。 newreq.pem ファイルは秘密鍵と余計な情報を含みますから、 秘密鍵だけを含むように編集しておく必要があります。 --BEGIN RSA PRIVATE KEY-- と --END RSA PRIVATE KEY-- の外側を全て削除してください。 ファイルをゲイトウェイマシンの適切な場所に移してください。 これを安全に行うことに気をつけて。 私のディストリビューションでは、FreeS/WAN の設定ファイルは全て /etc/freeswan におかれていますが、これは状況によって異なるかもしれません。
mv newreq.pem /etc/freeswan/ipsec.d/private/host.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/host.example.com.pem |
あなたのルート証明書を FreeS/WAN の設定ディレクトリにコピーしてください。 証明書だけです。鍵はコピーしないように。
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
失効証明書リストを生成し、正しい場所にコピーします。
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
さらにゲイトウェイマシン上で、 以下の行を含めることで ipsec.secrets ファイルを設定します:
: RSA host.example.com.key “ password” |
鍵対を生成したときのパスワードを入力。以下のように ipsec.conf を設定します:
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=1 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net leftsubnet=<your_subnet>/<your_netmask> also=roadwarrior conn roadwarrior right=%any left%defaultroute leftcert=host.example.com.pem auto=add pfs=yes |
お分かりのように、二つの接続が確立しています。 一つはゲイトウェイマシンへ、一つはゲイトウェイマシンの背後のネットワークへ。 これは、もしあなたがゲイトウェイマシン上でファイアーウォール/NAT の類を 設定しているなら特に便利です。 この設定は有効な証明書を持っている人は誰でもゲイトウェイマシンに 接続できるようになっています。
手続きは同様で、クライアントマシンの完全に権限のあるドメイン名 (例えば client.example.com)を CN にして クライアントマシンの証明書を生成する必要があります。 この証明書はゲイトウェイの証明書と同じ署名機関に署名されていなければなりません。 これによって、その接続が認証されます。
ゲイトウェイのときのように、 以下のファイルを安全に設定用ディレクトリにコピーします。
mv newreq.pem /etc/freeswan/ipsec.d/private/clienthost.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/clienthost.example.com.pem |
またあなたのルート証明書も FreeS/WAN 設定ディレクトリにコピーします。 証明書のみで、鍵はコピーしないように。
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
失効証明書リストを生成し、正しい場所にコピーします。
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
最後にあなたのゲイトウェイマシンに証明書もコピーする 必要があります(秘密鍵はコピーしない)。
mv host.example.com.pem /etc/fresswan/ipsec.d/host.example.com.pem |
同様に、 クライアントの秘密鍵をロードするために ipsec.secrets ファイルを編集します。
: RSA clienthost.example.com.key “password” |
そして、接続を可能にするために以下のように ipsec.conf を編集してください:
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=0 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net left=(ip of host) leftsubnet=(gateway_host_subnet)/(gateway_host_netmask) also=roadwarrior conn roadwarrior left=(ip of host) leftcert=host.example.com.pem right=%defaultroute rightcert=clienthost.example.com.pem auto=add pfs=yes |
これで VPN リンクを開始することができます。
ipsec auto --up roadwarrior ipsec auto --up roadwarrior-net |
自動的にこのリンクを開始するためには、設定ファイルの 'auto=add' を 'auto=start' に置き換えます。
この手続きは FreeS/WAN クライアントと同じです。 winhost.example.com の CN で証明書を生成しますが、 この証明書を .p12 ファイルに変換する必要があります。 “MS-Outlook で証明書を使うには” の章の手続きに従ってください。 ただし、.p12 ファイルはルート CA 証明書: winhost.example.com.p12 と一緒に されていることを確認してください。
加えて、以下の出力に注意:
openssl x509 -in cacert.pem -noout -subject |
このファイルを安全に MS-Windonws マシンにコピーします。
Marcus Muller 氏の ipsec.exe ユーティリティ を、例えば c:\ipsec ディレクトリにインストールする必要があります。
コンソール (Micorsoft Management Console, MMC) を開いて、 「追加/削除('Add/Remove Snap-in')」のところで「追加('Add')」をクリックし、 「証明書('Certificates')」をクリックすると、「追加」で 「コンピュータアカウント('Computer Account')」を選び、 そして「次('Next')」に行きます。 「ローカルコンピュータ(Local Computer')」を選んで、 「終了('Finish')」、「閉じる('Close')」をクリックして 最後に「OK」です。
これで .p12 証明書を追加できます。
プラス矢印を「証明書(ローカルコンピュータ)」でクリックして、 「パーソナル」を右クリック、 そして「全てのタスク」をクリック、そして「インポート」で「次」をクリックします。 .p12 ファイルへのパスをタイプし(またはブラウズしてファイルを選択し)、 「次」をクリックします。 エクスポート用のパスワードをタイプして、「次」をクリックします。 「証明書の種類に基づいて自動的に証明書庫を選択」を選び、 「次」をクリックします。 「終了」をクリックして、ポップアップしたプロンプトに「Yes」と答えます。 MMC を終了して、毎回 Snap In を再追加する必要がないように、 ファイルとして保存します。
ipsecpol.exe (Windows2000) または ipseccmd.exe (Windows XP) を ipsec ユーティリティのドキュメントに書かれているようにインストールします。 (Windows マシン上で)ipsec.conf ファイルを編集して、 "RightCA" を 'openssl x509 -in cacert.pem -noout -subject' の出力で置き換え、 以下のようにフォーマットし直します。 (以下の例に従って、 / をコンマに変え、フィールドの名前をいくつか変更する必要があります。):
conn roadwarrior left=%any right=(ip_of_remote_system) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes conn roadwarrior-net left=%any right=(ip_of_remote_system) rightsubnet=(your_subnet)/(your_netmask) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes |
リンクを開始しましょう。
'ipsec.exe' コマンドを走らせます。以下が出力の例です:
C:\ipsec>ipsec IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller Getting running Config ... Microsoft's Windows XP identified Host name is: (local_hostname) No RAS connections found. LAN IP address: (local_ip_address) Setting up IPSec ... Deactivating old policy... Removing old policy... Connection roadwarrior: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (ip_of_remote_system)/255.255.255.255 CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... Connection roadwarrior-net: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (remote_subnet)/(remote_netmask) CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... C:\ipsec> |
ここで、ゲイトウェイホストに ping してみてください。 'Negotiateing IP Security'(「IP セキュリティのネゴシエーションをしています」) と二三回表示されて、ping の応答が帰ってくるはずです。 これは二三回の試行が必要かもしれないことに注意してください。 T1 からケーブルモデム上の VPN サーバにヒットするのに、 3, 4 回の ping がかかるのが普通です。 リモートエンド上でイントラネットワークについても同じことをしてください。 ちゃんとやり遂げましょう!