WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

SSL 証明書を IIS から Apache に移行する方法

とある事情で SSL の証明書を IIS から Apache に移す作業を行ったので、本日はその方法をご紹介しようと思います。最近は IIS のシェアが Apache に迫っているらしいので、 IIS から Apache への移行が少しでも増えればと思います。証明書が移行できないと、たしか再発行には何万円もかかるはずですからね :)

IIS から証明書・秘密鍵ペアをエクスポート

それでは、さっそくやってみましょう。まずは IIS から証明書・秘密鍵ペアをエクスポートします。これは IIS の標準機能で普通にやれば OK です。具体的な手順は以下のとおりです。

  1. スタートメニューの管理ツールなどから「インターネット インフォメーション サービス(IIS) マネージャ」を起動。
  2. 左のペインで [マシン名(ローカル コンピュータ)]-[Web サイト] を開き、証明書をエクスポートしたいサイトのプロパティーを表示する。
  3. Web サイトのプロパティーダイアログが開くので、「ディレクトリセキュリティ」タブの「証明書の表示」ボタンをクリック。
  4. 証明書ダイアログが開くので、「詳細」タブの「ファイルにコピー」ボタンをクリック。
  5. 「証明書のエクスポートウィザード」が開くので、「次へ」をクリック。
  6. 秘密キーをエクスポートするかを尋ねてくるので、「はい、秘密キーをエクスポートします」を選択して「次へ」をクリック。
  7. エクスポート形式を尋ねてくるので、「PKCS #12」を選択して「次へ」をクリック。
  8. 保護用のパスワードを尋ねてくるので、適当に入力して「次へ」をクリック。
  9. エクスポートファイル名を尋ねてくるので、適当に入力して「次へ」をクリック。
  10. 「完了」をクリック。

これで、証明書・秘密鍵ペアが (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 への移行を検討されてはいかがでしょうか。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles