いつもいつも忘れてしまうのでメモエントリー。
SMTP, POP3, IMAP4, あとOpenVPNに使いたいので、第四種オレオレ認証局 を立ち上げて証明書を発行する。ユーザーは俺しか居ない。
ルート証明書(自己署名証明書、通称オレオレ証明書)の準備
# cd /path/to/ca # touch index.txt # echo 1 > serial # mkdir newcerts # openssl req -new -newkey rsa:2048 -keyout private/cakey.pem -out careq.pem # openssl ca -in careq.pem -out cacert.pem -selfsign -days 3650 -extensions v3_ca -batch
ポイント
-newkey rsa:2048— RSA2048ビットの鍵-selfsign— 自己署名-days 3650— 10年間有効 (鍵の管理に自信がないなら真似しないこと!)-extensions v3_ca— CAであるというSubject Typeを埋め込む。これを付けないとIE7などのチェックの厳しいブラウザは証明書チェインの検証で失敗する。
主に最後の理由でCA.shを使っていない。これでcacert.pemにCAのルート証明書(オレオレ証明書)ができる。鍵とパスフレーズは死守。
おまけとしてDHパラメタを計算しておくとあとで楽 (i.e. OpenVPNはこれを要求する)。いまどきのCPUなら1分もかからない。
# openssl dhparam -out dh1024.pem 1024 # openssl dhparam -out dh2048.pem 2048
cacert.pemを安全な伝送路(有線LAN、物理メディア、印刷等)でクライアントマシンに伝送し、ブラウザ等にインストールする。
サーバ証明書の作成
まずサーバ管理者の立場で、CSR (Certificate Signing Request) を作成する。
# openssl req -new -newkey rsa:2048 -nodes -keyout cert.key -out cert.csr
次にCA管理者の立場で、ルート証明書を使ってCSRに署名し、サーバ証明書を作成する。
# openssl ca -in cert.csr -out cert.crt -batch
SSLサーバで使うのはcert.crtとcert.key。ApacheならSSLCertificateFileとSSLCertificateKeyFileにそれぞれ指定。
サービスによっては (i.e. courier-pop3d) 証明書、鍵、DHパラメータをまとめたファイルを要求するので、そういう場合は単に繋げてしまえばいい。繋げた場合はパーミッションを忘れずに落としておく。