2014年12月1日月曜日

SSL証明書の更新方法

この記事は、「(主に一人)情シス Advent Calendar 2014」の1日目の記事です。


SIer時代は全くやったことなかったのですが、Web系の会社に転職した最近ではよくやるので、自分のメモとして残しておきます。

サーバログイン

下記サーバー上にSSHでログインして作業
ip : あなたのサーバのIPアドレス
user : ユーザ名
pass : パスワード

作業フォルダ作成

なんでもいいけど、作業用フォルダを作成する。今回は西暦フォルダの下にドメインごとのフォルダを作成することにしてみた。
cd /root/ssl
mkdir -p thisyear/yourdomain
cd thisyear/yourdomain

事前準備

CSR情報の確認

以下のような情報が必要。opensslコマンドを実行し、過去のCSRから情報を取得する。
  • 提出するSCRに記載する値
    • 都道府県
    • 市町村
    • 会社名
    • 部署名
    • コモンネーム(サイトURL)
    • メールアドレス ※任意
以下のコマンドを実行して、現在のCSRから提出した時の情報を取得する
 openssl req -text -noout -in ../lastyear/yourdomain.csr
もちろんだが、yourdomain.csr(去年作成したCSRファイル)が残っていなければならない。

ランダムファイルの作成

秘密鍵を作成する際に利用するなるランダムファイルを作成する。ランダムファイルはopensslの機能を使って作成することが可能。
echo 適当な文字列 > temp
/usr/bin/openssl md5 temp > rand.dat

秘密鍵の作成

openssl genrsa -rand rand.dat -aes256 2048 > yourdomain.key

CSRの作成

SHA-256(SHA-2)を利用した証明書を作成するため、以下のようなコマンドでSHA-256向けのCSRを作成する。
/usr/bin/openssl req -new -key newkey.key -out newcsr.csr -sha256
CSRに入力すべき情報を求められるので、事前に確認した情報を入力していく。
コモンネームだけは絶対に間違えないように、一度コピーしてクリップボードに入った情報をブラウザにペーストしてみて、そのサイトが表示されることを確認してからコンソールにもペーストする。

CSRの提出

利用しているSSL証明書発行会社のサイトにログインしてCSRを提出する。
例としてジオトラストのURL。
 https://storefront.geotrust.co.jp/sf/login.do
CSRが問題なく提出できている場合は、クレジットカードの情報の入力が必要になるため、お金の管理者に入力を依頼する。

認証メールの受信

SSL証明書発行会社に登録してあるアカウントに証明書が送られてくる。
送られてきたURLをクリックして、認証を完了させる
ちなみに、選択できるメールアドレスは、Whoisに記載されているものか、ドメイン名から自動で生成された代表的な管理者向けメールアドレスのみである。
選択可能などのメールアドレスも受信できない場合は、選択肢にあるどれかのメールアドレスをメールサーバ上に作成し、受信可能な状態にするか、Whoisで登録しているドメイン管理者のメールアドレスを現在存在するものへ変更する必要がある。

SSL証明書の受信

SSL証明書が早ければ数分後にメールで送られてくる。
メールに直接暗号が記載されているので、それをコピペして証明書ファイルを作る。
「-----BEGIN CERTIFICATE-----」から、「-----END CERTIFICATE-----」までを、それを含めて切り取り、別ファイルにする。
ファイルは空行を含んではいけず、最終行は「-----END CERTIFICATE-----」で終わっていなければならない。それ以降に1文字も入っていてはいけない。スペースも入っていてはいけない。

中間CA証明書の作成

SSL証明書を購入した業者のサイトにて提供されている証明書を組み合わせて、中間CA証明書を作成する。ファイル名は「inca.pem」にしていますが、判別さえできればなんでもいいみたいです。
-----BEGIN CERTIFICATE-----
セキュア・サーバID 三階層目中間CA証明書
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
二階層目中間CA証明書(製品共通)※クロスルート証明書
-----END CERTIFICATE-----
ちなみに、ジオトラストの場合はhttps://www.geotrust.co.jp/resources/repository/intermediate.html からそれぞれ取得できるので、自分で貼りつけて作成する。

パスワードを抜く

cp yourdomain.key yourdomain.key.original
openssl rsa -in yourdomain.key.original  -out yourdomain.key
ここでパスワードを尋ねられるので入力すると、パスワードが外された状態の yourdomain.key が出力される。本当はパスワード付きの方がいいんですが、Webサーバを再起動する度にパスワードを尋ねられるので、「そんなどめんどくさいから抜いちゃえ」とパスワードを抜く場合が世間的にも多いようです。

IIS用の証明書に変換

IISが求める形式に変換するには以下のコマンドを実行します。
openssl pkcs12 -export -inkey yourdomain.key -certfile geotrust.co.jp.cert -in yourdomain.cert -out yourdomain.pfx