SSL証明書更新 on Apache + OpenSSL 手順メモ


更新頻度が1年に1回だからその都度忘れてしまうのでメモ。

1) 秘密鍵を生成

openssl コマンドで生成
擬似乱数情報の生成 (md5ダイジェスト値を擬似乱数をして使用)

# ./openssl md5 * > rand.dat

擬似乱数ファイル(ここでは rand.dat)から秘密鍵を生成
トリプルDESを使用、2048bitの秘密鍵(ここでは 2009key.pem を作成

# openssl genrsa -rand rand.dat -des3 2048 > 2009key.pem

パスフレーズを入力するので、忘れないように。

2) 秘密鍵からCSRを生成

作成した秘密鍵(2009key.pem)からCSR(2009csr.pem)を生成する

# openssl req -new -key 2009key.pem -out 2009csr.pem

この時に秘密鍵のパスフレーズを求められる
以下、証明書に登録される情報(ディスティングイッシュネーム情報)を入れる
更新前の証明書と同じ内容にする必要があるので、更新前の証明書を控えておく

  • Country(国名): JP
  • State(都道府県名): Tokyo
  • Locality(市区町村名): Shibuya-ku
  • Organizational Name(組織名): ShakeSoul,Inc.
  • Organizational Unit(部門名): System1
  • Common Name(コモンネーム): www.shakesoul.net
  • 以下は入力せずに Enter キーを押して進める
    • Email Address []:
    • A challenge password []:
    • An optional company name []:

CSRが生成される
CSRの内容を発行局へ提出

3) 各ファイルのパーミッション変更と秘密鍵のパスワード削除
  • 発行局から送られてきた証明書をコピペするなどしてファイル化する</p>
    • この場合 2009cert.pem とする
  • 中間CA証明書が必要な場合はコピペするなどしてファイル化する
    • この場合 CA-cert.pem とする
  • 各ファイルのパーミッションを以下のようにする
  • rw———- 1 root root 1854 12月 3 11:32 2009cert.pem
  • rw———- 1 root root 1696 12月 13 2007 CA-cert.pem
  • rw———- 1 root root 887 12月 3 11:24 2009key.pem
  • 秘密鍵のパスフレーズを削除する 起動時にパスワード入力を求められないようにするため以下を実行

# openssl rsa -in 2009key.pem -out 2009key.pem

4) 証明書のインストール
  • 事前に作成した秘密鍵と証明書を Apache の config ファイルで指定する</p>
    • 例えば、以下にファイルがあるとすると</p>
      • 証明書ファイル: /usr/local/ssl/certs/2009cert.pem
      • 秘密鍵ファイル: /usr/local/ssl/private/2009key.pem
      • 中間CA証明書ファイル: /usr/local/ssl/certs/CA-cert.pem
    • …/conf.d/ssl.conf の中を以下のように書き換える

SSLCertificateFile /usr/local/ssl/certs/2009cert.pem

SSLCertificateKeyFile /usr/local/ssl/private/2009key.pem

SSLCertificateChainFile /usr/local/ssl/certs/CA-cert.pem

5) Apache 再起動

# /etc/rc.d/init.d/httpd restart

tail /var/log/httpd/ssl_error_log がでてなければOK