IIS の自己署名証明書からPEM形式のキーと証明書を抽出する方法
Windows を利用している場合は、localhost で利用できるサーバ証明書と秘密鍵を手っ取り早く取得する方法があります。
マイクロソフトのウェブサーバー IIS の管理画面には、自己署名証明書を生成する機能があります。これで作成した自己署名証明書に対して、 OpenSSL のコマンドを用いることで、Express で利用するための PEM 形式のサーバ証明書と秘密鍵を抽出することができます。
IIS マネージャを使って自己署名証明書を生成
自己署名入り証明書の作成
- 管理画面から IIS マネージャを開きます。
- 左側のペインで一番上のコンピュータノードを選択します。
- 右側のペインで「サーバ証明書」を選択します。
- 右端の「操作」の中から「自己署名入り証明書の作成」を選択します。
- 画面の指示に従って証明書を作成します。
- 証明書ストアは「個人 (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 になるなど、バリエーションはあるようです。 実際に生成された「発行先」を確認して使用してください。