# 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
テスト用の自己署名したCAでテストするとCAが信頼できないといって暗号化ができないので、ここに書かれているように、CAの証明書を信頼するようにCertificate Managerで設定する必要があります。
新しく証明書を作ってみたところ、SSLのハンドシェイク時にサーバの証明書の検証に失敗してしまいます*1。ふと思いついて、CE側でシステムの日付を次の日にしてみたところうまくいくようになりました。おそらくタイムゾーン周りでバグっているのではないかと思います。
普段は発行したての証明書を使う機会はほとんどなさそうですし、無効になる時間も長くても12時間くらいしか延びないのであまり問題はおきなそうですが気になりますね。時差がマイナスな地域だと、発行したてでもうまくいくので気づいていないのではないでしょうか。
*1 Windowsではうまくいきます
予想通り9時間経過したら検証に成功するようになりました。ソースをチェックする必要がありますね。