Topページ 17 Apr. 2004

IKEデーモンのracoonで、RSA認証するときの証明書や秘密鍵をつくる方法ですが、 うまく説明しているサイトがなかなかないので、このページを作りました。
参照: KAMEのページ
 
よく自己署名の証明書を使って説明していることありますが、その場合、 自分の証明書を相手のマシンに持っていく必要があります。
マシンが3台以上になると接続する全ての相手の証明書を自分のマシンに 入れなければならないので面倒です。
 
スマートな方法は自前の認証局(demoCA)を作り、それを使って各マシンの証明書 を発行していくことです。
そうすれば各マシンには自分の証明書と秘密鍵、それにdemoCAの証明書と 破棄リスト(CRL)の4ファイルだけで済みます。
自組織だけで閉じている場合は、有料の認証局を使わずに、この方法だけで十分です。
 
opensslには証明書関係の操作スクリプト(CA.pl)が付いていますが、 racoonで使うにはイマイチなので改造してみました。 また、opensslのコンフィグファイル(openssl.cnf)も直すと便利になります。
 
これらをこちらにアップしておきます。
これらのオリジナル(Debian openssl 0.9.7d-1)との差分は こちらです。
これらを使って証明書や秘密鍵を作る方法です。
  1. 適当なディレクトリに改造版CA.plとコンフィグファイルmyssl.confを展開し、 myssl.confを自分の環境に合わせて修正する。 (鍵長は2048ビット、ハッシュはsha1にしてあります。)
     
  2. demoCA認証局を作る。
    ./CA.pl -newca
    
    入力を促されたら適当に答えていきます。
    うまく行くとracoonディレクトリに xxxxxxxx.0 というファイル(xxxxxxxxはハッシュ値) が出来ているはずで、これがdemoCAの証明書です。 そして xxxxxxxx.r0 がCRLです。
     
  3. 以下を繰り返して、各マシンの証明書と秘密鍵を作っていく。
    ./CA.pl -newreq-sign
    
    入力を促されたら適当に答えていきます。
    少なくとも Common Name の入力だけは各マシンでユニークになるようにしたほうが よいでしょう。
    うまく行くとracoonディレクトリに certNN.pem なる証明書と privNN.pem なる秘密鍵が出来ているはずです。(NNは01から始まる数字)
各マシンにdemoCA証明書(xxxxxxxx.0)とCRL(xxxxxxxx.r0)、 証明書(certNN.pem)、秘密鍵(privNN.pem)の4ファイルを配ります。 秘密鍵のパーミッションには注意してください。
共有鍵ファイル(psk.txt)がracoon.confと同じディレクトリ(Debianでは /etc/racoon) にあるので証明書ファイル等も同じディレクトリでよいかと思います。
 
racoon.confの例
path certificate "/etc/racoon";
remote anonymous
{
    exchange_mode aggressive,main;
    certificate_type x509 "cert01.pem" "priv01.pem";
    my_identifier asn1dn;
    proposal {
        encryption_algorithm 3des;
        hash_algorithm sha1;
        authentication_method rsasig;
        dh_group 2;
    }
}