Microsoft IIS(Internet Information Services)はSSL証明書にPFXフォーマットを使用します。これはGetHTTPSやほとんどのLinuxベースのツールが生成するPEMファイルとは異なります。このガイドでは、証明書の変換とIIS 10へのインストール方法を解説します。
前提条件
- IIS 10がインストールされたWindows Server
- GetHTTPSからの証明書ファイル:
cert.pem、privkey.pem、chain.pem - OpenSSLがインストールされていること(Git for Windowsに同梱、または別途インストール)
ステップ1: PEMをPFXに変換する
IISはPEMファイルを直接読み取れません。OpenSSLを使用してPFXフォーマットに変換します:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
エクスポートパスワードの設定を求められます。インポートステップで使用するので覚えておいてください。
OpenSSLがない場合 Git for Windowsがインストールされていれば、OpenSSLは
C:\Program Files\Git\usr\bin\openssl.exeにあります。またはslproweb.com/products/Win32OpenSSL.htmlからダウンロードしてください。
証明書フォーマットの詳細:PEM、PFX、DERの解説
ステップ2: PFXをIISにインポートする
- IISマネージャーを開きます(
inetmgrを実行) - 左パネルのサーバー名をクリックします
- 中央パネルのServer Certificatesをダブルクリックします
- 右のActionsパネルの**Import…**をクリックします
certificate.pfxファイルを参照します- ステップ1で設定したエクスポートパスワードを入力します
- 証明書ストアを選択:Web Hosting(またはPersonal)
- OKをクリックします
証明書がServer Certificatesの一覧に表示されます。
ステップ3: HTTPSをサイトにバインドする
- IISマネージャーで、左パネルのSitesを展開します
- Webサイトを右クリック → Edit Bindings…
- **Add…**をクリックします
- 以下を設定します:
- Type: https
- Port: 443
- Host name:
yourdomain.com(すべてのホスト名の場合は空白のまま) - SSL certificate: インポートした証明書を選択
- OKをクリックします
- 必要に応じて
www.yourdomain.comでも繰り返します
ステップ4: HTTPをHTTPSにリダイレクトする
URL Rewriteモジュールをインストールし(まだの場合)、サイトのweb.configに以下を追加します:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
ステップ5: 確認する
ブラウザでhttps://yourdomain.comを開きます。パドロックをクリックして証明書の詳細を確認してください。
PowerShellでの検証:
# ポート443にバインドされた証明書を確認
netsh http show sslcert
トラブルシューティング
「A specified logon session does not exist」
秘密鍵が正しくインポートされていません。以下のコマンドでPFXファイルを再エクスポートしてください:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -passout pass:YourPassword
PFXが一致する鍵と証明書ファイルから作成されていることを確認してください。
バインドのドロップダウンに証明書が表示されない
インポートが暗黙的に失敗した可能性があります。イベントビューアー → Windowsログ → アプリケーションでエラーを確認してください。PFXパスワードが正しく、ファイルが破損していないことを確認してください。
バインド後も「このサイトは安全ではありません」と表示される
証明書チェーンが完全であることを確認してください。PFX変換にchain.pemファイルが含まれている必要があります(-certfile chain.pem)。これがないと、ブラウザは信頼チェーンを検証できません。
よくある質問
Let’s Encrypt証明書をIISで使用できますか?
はい。Let’s Encrypt証明書はIISを含むあらゆるサーバーで動作します。唯一の追加ステップはPEMからPFXフォーマットへの変換です。GetHTTPSからPEMファイルを取得し、上記のOpenSSLコマンドで変換してください。
IIS用のCertbotのようなツールはありますか?
win-acme(旧letsencrypt-win-simple)がWindows/IIS向けの最も人気のあるACMEクライアントです。証明書の発行、PFX変換、IISバインド、自動更新を1つのツールで処理します。IISでLet’s Encryptを完全自動化したい場合に使用してください。
IISでの更新方法は?
- GetHTTPSで新しい証明書を取得します
- PFXに変換:
openssl pkcs12 -export -out new.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem - IISマネージャー → Server Certificatesで新しいPFXをインポートします
- サイトバインドを新しい証明書に更新します
- Server Certificatesから古い証明書を削除します
自動更新にはwin-acmeの利用を検討してください。サイクル全体を自動的に処理します。
IISはECDSA/ECC証明書に対応していますか?
Windows Server 2016以降のIIS 10はECDSA証明書に対応しています。GetHTTPSはデフォルトでECDSA P-256を生成し、最新のIISで動作します。古いIISバージョン(8.5以前)ではRSA証明書が必要な場合があります。
同じIPで複数サイトを使用できますか?
はい。IIS 8以降は**SNI(Server Name Indication)**に対応しており、同じIPアドレスで複数のSSL証明書を使用できます。HTTPSバインドを追加する際に「Require Server Name Indication」をチェックし、ホスト名を入力してください。各サイトに独自の証明書を持たせることができます。
WindowsでOpenSSLを見つけるには?
OpenSSLはWindowsにデフォルトでは含まれていません。一般的な入手先:
- Git for Windowsに
C:\Program Files\Git\usr\bin\openssl.exeとして含まれています - Chocolatey:
choco install openssl - Win32/Win64ビルド: slproweb.comからダウンロード
インストール後、PATHに追加するか、コマンドでフルパスを使用してください。