2004-02-03 [長年日記]

opensslのおさらい

# CAの鍵ペアと証明書要求作成
openssl req -new -out ca.req -keyout ca.key

# CAの公開鍵に自己署名して証明書作成
openssl x509 -req -signkey ca.key \
 -days 365 -sha1 -in ca.req -out ca.crt

# サーバ用鍵ペアと証明書要求作成
openssl req -new -out server.req -keyout server.key -nodes

# CAの鍵でサーバの公開鍵に署名して証明書作成
openssl x509 -req -CA ca.crt -CAkey ca.key \
 -CAcreateserial -days 365 -sha1 -in server.req -out server.crt

# S/MIME用鍵ペアと証明書要求作成
openssl req -new -out user.req -keyout user.key -nodes

# CAの鍵でS/MIME用の公開鍵に署名して証明書作成
openssl x509 -req -CA ca.crt -CAkey ca.key \
 -days 365 -sha1 -in user.req -out user.crt

# S/MIME用の鍵ペアをPKCS12に変換
cat user.key user.crt | openssl pkcs12 -export -certfile ca.crt -out user.p12

# PKCS12からPEMへの変換
openssl pkcs12 -in user.p12 -nodes

MozillaでS/MIME

テスト用の自己署名したCAでテストするとCAが信頼できないといって暗号化ができないので、ここに書かれているように、CAの証明書を信頼するようにCertificate Managerで設定する必要があります。

Windows CE版のopensslの問題

新しく証明書を作ってみたところ、SSLのハンドシェイク時にサーバの証明書の検証に失敗してしまいます*1。ふと思いついて、CE側でシステムの日付を次の日にしてみたところうまくいくようになりました。おそらくタイムゾーン周りでバグっているのではないかと思います。

普段は発行したての証明書を使う機会はほとんどなさそうですし、無効になる時間も長くても12時間くらいしか延びないのであまり問題はおきなそうですが気になりますね。時差がマイナスな地域だと、発行したてでもうまくいくので気づいていないのではないでしょうか。

*1  Windowsではうまくいきます

Windows CE版のopensslの問題 (2)

予想通り9時間経過したら検証に成功するようになりました。ソースをチェックする必要がありますね。

[Q3] S/MIME関係

S/MIME関係の問題点としては以下のものがあります。

  1. smime-typeパラメータの付いていないapplication/x-pkcs7-mimeがS/MIMEメッセージとして認識されない(BTS:481
  2. エンコードされている側のエンティティにヘッダが付いていない場合、エンベロープ側からコピーしたほうが良い(BTS:481
  3. 返信時などに復号化・署名の確認が行われない(BTS:300
  4. multipart/signed形式の署名に未対応(BTS:240

1はすでに直しましたが、2-4は現在別ブランチでやっている大きな修正が終わってからやろうと思います。


トップ «前の日記(2004-02-02) 最新 次の日記(2004-02-04)»