seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

何回やっても何回やってもOpenSSLを忘れてしまうので、次に使う時のためにメモだけはとっておく。

verisignの証明書 <-> オレオレ証明書S/MIME暗号化メール疎通記念。(何度めだ?)

CAの作成

有効期限: 4096日で証明局作成。(自己署名)

openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout cakey.pem -days 4096

PEMからDERへ

証明書をWindowsの証明書ストアで開けるフォーマットに変換 (cacert.pem -> cacert.der)

openssl x509 -inform pem -in cacert.pem -outform der -out cacert.der

メール送信側は、これをルート証明書としてWindowsの証明書ストアに入れる。
受信側は最初に署名付きメールを受け取ったときに、これをOutlookからインポートできる。

証明書署名要求の作成

とりあえず、Common Nameにメールアドレスを記述。

openssl req -new -newkey rsa:1024 -out USER001.csr -keyout USER001prv.pem

CAで署名

その前に、シリアルナンバーのためにcacert.srlファイルを作成、最初の行を「01」といれておく。

openssl x509 -req -days 4096 -in USER001.csr -CAkey cakey.pem -CA cacert.pem -out USER001.pem

証明書をpfxフォーマット(プライベートキーとペア)にする

openssl pkcs12 -export -out USER001.pfx -inkey USER001prv.pem -in USER001.pem

これをOutlookセキュリティオプションからインポートすれば、Common Nameで指定したメールアドレスからの送信時には署名をつけることができるようになる。*1
この署名を受け取った側、もしくは証明書をder形式にしたものをOutlookのアドレス帳でメールアドレスと関連づければ*2、そのメールアドレスに対して暗号化することができるようになる。

(サーバ証明書の場合は) privatekeyのパスフレーズを落とす方法

apacheweblogicといった、サーバ用の証明書の場合、無人でサービスを立ち上げるためにパスフレーズを落とす必要がある。

openssl rsa -in server_key.pem -out server_unsafe_key.pem

http://d.hatena.ne.jp/seraphy/20050121

追記(2008/3/9)

最近、ようやく作業マシンがCore2Duoになって古いPCを返却することになった。で、Office2003を入れて、Outlookの設定をし直して、証明書も入れなおしたのに、どうにも暗号化しようとすると失敗する。署名はできるんだよね。で証明書を入れなおしたり、さんざん悩んだのだが、Microsoft Updateを実行して、Office2003を最新の状態にしたら何の問題もなく復活した。そんな不具合情報なんてなかったと思うが、暗号化まわりは結構センシティブなようだ。とりあえず最新版をいれとけ、ってことで。

*1:Windowsの証明書ストアに入れただけではダメ。

*2:Windowsの証明書ストアに入れただけではダメ。