IIS の自己署名証明書からPEM形式のキーと証明書を抽出する方法

Windows を利用している場合は、localhost で利用できるサーバ証明書と秘密鍵を手っ取り早く取得する方法があります。

マイクロソフトのウェブサーバー IIS の管理画面には、自己署名証明書を生成する機能があります。これで作成した自己署名証明書に対して、 OpenSSL のコマンドを用いることで、Express で利用するための PEM 形式のサーバ証明書と秘密鍵を抽出することができます。

IIS マネージャを使って自己署名証明書を生成

自己署名入り証明書の作成

  1. 管理画面から IIS マネージャを開きます。
  2. 左側のペインで一番上のコンピュータノードを選択します。
  3. 右側のペインで「サーバ証明書」を選択します。
  4. 右端の「操作」の中から「自己署名入り証明書の作成」を選択します。
  5. 画面の指示に従って証明書を作成します。
    • 証明書ストアは「個人 (Personal)」を選択します。

ここで作成された証明書は、ユーザーの証明書ストアに CA 証明書とともに保存されます。このためブラウザからは、さも正しい認証局 (CA) で発行されたようにみえるので、エラーなくアクセスできるようになります。

自己署名証明書のエクスポート

IIS マネージャには上で作成した自己署名入り証明書のキーペアを、PKCS#12 形式のファイル (*.pfx) に出力する機能があります。

IIS マネージャにて、上で作成した自己署名入り証明書を選択して、「操作」の中から「エクスポート」を選択します。 ここでは cert.pfx という名前でエクスポートしたとします。

キーペアファイル (PKCS#12, *.pfx) から秘密鍵と証明書を抽出

上でエクスポートしたキーペア cert.pfx から、次のコマンドで秘密鍵とサーバ証明書をそれぞれ抽出できます。

> openssl pkcs12 -in cert.pfx -nocerts -out key.pem 
> openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem

これで作成した PEM 形式の秘密鍵 key.pem とサーバ証明書 cert.pem を用いて、 Express などで HTTPS 通信を行うことができます。

ただし開発用なのでコモンネーム (CN)、サブジェクト代替名 (SAN, Subject Alternative Name) ともにコンピュータ名が指定されて作成されます。

あらかじめインストールされている開発用証明書では localhost になるなど、バリエーションはあるようです。 実際に生成された「発行先」を確認して使用してください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Node.js 入門