SSL 証明書を IIS から Apache に移行する方法
とある事情で SSL の証明書を IIS から Apache に移す作業を行ったので、本日はその方法をご紹介しようと思います。最近は IIS のシェアが Apache に迫っているらしいので、 IIS から Apache への移行が少しでも増えればと思います。証明書が移行できないと、たしか再発行には何万円もかかるはずですからね :)
IIS から証明書・秘密鍵ペアをエクスポート
それでは、さっそくやってみましょう。まずは IIS から証明書・秘密鍵ペアをエクスポートします。これは IIS の標準機能で普通にやれば OK です。具体的な手順は以下のとおりです。
- スタートメニューの管理ツールなどから「インターネット インフォメーション サービス(IIS) マネージャ」を起動。
- 左のペインで [マシン名(ローカル コンピュータ)]-[Web サイト] を開き、証明書をエクスポートしたいサイトのプロパティーを表示する。
- Web サイトのプロパティーダイアログが開くので、「ディレクトリセキュリティ」タブの「証明書の表示」ボタンをクリック。
- 証明書ダイアログが開くので、「詳細」タブの「ファイルにコピー」ボタンをクリック。
- 「証明書のエクスポートウィザード」が開くので、「次へ」をクリック。
- 秘密キーをエクスポートするかを尋ねてくるので、「はい、秘密キーをエクスポートします」を選択して「次へ」をクリック。
- エクスポート形式を尋ねてくるので、「PKCS #12」を選択して「次へ」をクリック。
- 保護用のパスワードを尋ねてくるので、適当に入力して「次へ」をクリック。
- エクスポートファイル名を尋ねてくるので、適当に入力して「次へ」をクリック。
- 「完了」をクリック。
これで、証明書・秘密鍵ペアが (9) で指定したファイルに出力されますので、それを移行先のマシン(Apache を動作させるマシン)に転送してください。
証明書・秘密鍵ペアを OpenSSL 用に変換
IIS からエクスポートしたファイルは openssl コマンドで Apache 形式に変換できます。エクスポートしたファイルが "cert.pfx" だとして、以下のコマンドを実行すれば OK です。
openssl pkcs12 -in cert.pfx -out cert.txt Enter Import Password: [エクスポート時に指定したパスワードを入力] Enter PEM pass phrase: [任意のパスワードを入力] Verifying - Enter PEM pass phrase: [パスワードを再入力]
「任意のパスワード」というのは、秘密鍵を暗号化するためのパスワードなのですが、どうせ次で解除してしまうので、本当に適当でかまいません。 "abcd" とかでもなんでも(^^;
これで "cert.txt" に変換後の証明書と秘密鍵が保存されました。しかし、 Apache で利用するためには証明書と秘密鍵が別々のファイルになっていなければなりません。少し面倒ですが、テキストエディタでコピペするのが一番手っ取り早いでしょう。 "cert.txt" をテキストエディタで開いたときに、
-----BEGIN RSA PRIVATE KEY----- . . . -----END RSA PRIVATE KEY-----
という部分が秘密鍵、
-----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE-----
という部分が証明書なので、それぞれを別々のファイルに保存してください。以降では、秘密鍵を "localhost.key" に、証明書を "localhost.crt" に保存したと仮定します。
秘密鍵の暗号化を解除する
"localhost.key" は暗号化されているので、このままでは Apache を起動するたびにパスワードを尋ねられます。以下のようにして解除しておきましょう。
openssl rsa -in localhost.key -out localhost.key
パスワードを尋ねてくるので、 openssl コマンドでの変換時に指定したパスワードを入力してください。これで "localhost.key" の暗号化が解除されます。
証明書・秘密鍵ペアを所定の場所にコピー
Apache が読み込める形式の証明書・秘密鍵ペアが得られたので、後はそれぞれのファイルを所定の場所に配置すれば移行完了です。 Fedora のデフォルト設定の場合、 root になって以下のようにコピーすれば良いはずです。いずれも所有者 root で、所有者のみ読み込み許可にしておいてください。
cp localhost.crt /etc/pki/tls/certs/localhost.crt chown root:root /etc/pki/tls/certs/localhost.crt chmod 400 /etc/pki/tls/certs/localhost.crt cp localhost.key /etc/pki/tls/private/localhost.key chown root:root /etc/pki/tls/private/localhost.key chmod 400 /etc/pki/tls/private/localhost.key
Fedora 以外のディストリビューションでは配置場所が違うかもしれません。その場合は、 Apache の設定ファイルから以下のディレクティブを探して、そこに設定されているファイルにコピーしてください。
ディレクティブ | 設定内容 |
---|---|
SSLCertificateFile | 証明書のフルパス名 |
SSLCertificateKeyFile | 秘密鍵のフルパス名 |
いずれの場合も、設定を反映させるためには Apache を再起動する必要がありますので注意してください。
以上、本日は IIS から Apache に SSL 証明書を移行する方法をご紹介しました。あくまで個人的な意見ですが、 Windows サーバーの諸機能は大規模な組織で使ってはじめて意味のあるもので、中小規模の組織で導入するメリットはほとんどないと思っています。 1 台の IIS サーバー(+ もう一台の MS SQL サーバー?)などの構成で Web サイトを公開している企業の皆様、 Apache への移行を検討されてはいかがでしょうか。
詳しくはこちらの記事をどうぞ!
この記事にコメントする