IIS への SSL/TLS 証明書インストール
Windows Server の Microsoft IIS(インターネット インフォメーション サービス)への SSL/TLS 証明書インストール手順。
IIS 10(Windows Server 2016/2019/2022)対応。
.pfx 形式でエクスポート/インポートする必要があります。
🛠️ 事前準備
- SSL ストアから取得した サーバ証明書(
.cerまたは.crt) - 中間 CA 証明書(通常はバンドル形式で含まれる)
- IIS が稼働している Windows Server
- サーバの管理者権限
📋 GUI による手順
-
IIS マネージャーを開く
サーバマネージャーから「ツール」→「インターネット インフォメーション サービス (IIS) マネージャー」を起動。
または、Windowsキー + R で
inetmgr。 -
「サーバ証明書」を開く
左側のツリーからサーバ名を選択し、右側の「機能ビュー」から「サーバ証明書」をダブルクリック。
-
「証明書の要求の完了」をクリック
右側の「操作」パネルから「証明書の要求の完了...」をクリック。
ウィザードが起動します。
-
証明書ファイルを指定
項目 入力内容 証明機関の応答が含まれるファイル名 SSL ストアから取得した証明書ファイル( .cerまたは.crt)のパスを指定フレンドリ名 管理しやすい名前(例: example.com 2026)新しい証明書の証明書ストアを選択 個人(Personal)を選択 「OK」をクリックすると、証明書がインポートされます。
-
サイトに証明書をバインド
左側のツリーから「サイト」→対象サイト(例: Default Web Site)を選択。
右側の「操作」パネルから「バインドの編集...」をクリック。
-
HTTPS バインドを追加
「バインドサイト」ダイアログで「追加...」をクリック。
項目 入力内容 種類 https IP アドレス 「すべて未割り当て」または特定の IP ポート 443 ホスト名 FQDN を入力(例: example.com)サーバ名表示が必要 (SNI) 複数サイトを同じ IP で運用する場合は ✅ SSL 証明書 先ほどインポートした証明書を選択 「OK」で確定。
-
動作確認
ブラウザで
https://example.comにアクセスし、鍵アイコンが表示されることを確認。
🔧 PowerShell によるインストール(自動化向け)
# 証明書のインポート
Import-Certificate -FilePath "C:\temp\example.com.cer" -CertStoreLocation "Cert:\LocalMachine\My"
# 既存のバインディング確認
Get-WebBinding -Name "Default Web Site"
# HTTPS バインディングの追加
New-WebBinding -Name "Default Web Site" `
-Protocol https `
-Port 443 `
-HostHeader "example.com" `
-SslFlags 1
# 証明書のサムプリント取得
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*example.com*" }
$thumbprint = $cert.Thumbprint
# バインディングに証明書を割り当て
$binding = Get-WebBinding -Name "Default Web Site" -Protocol https -HostHeader "example.com"
$binding.AddSslCertificate($thumbprint, "My")
🛡️ 推奨セキュリティ設定(2026年版)
IIS の SSL/TLS 設定は レジストリで管理されます。直接編集は危険なため、ツールの利用を推奨:
- IIS Crypto(Nartac Software 製・無料)── レジストリ編集を GUI で安全に行えます
推奨設定:
- ✅ TLS 1.2 / 1.3 のみ有効(SSL 2.0/3.0、TLS 1.0/1.1 は無効化)
- ✅ 強力な暗号スイートのみ有効(RC4、3DES、MD5 は無効化)
- ✅ HSTS の有効化(後述)
🔒 HSTS(HTTP Strict Transport Security)の設定
IIS 10(Windows Server 2016以降)では web.config で HSTS を有効化できます。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
</customHeaders>
</httpProtocol>
<!-- HTTP → HTTPS リダイレクト -->
<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:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
⚡ Win-ACME で完全自動化
❓ よくあるご質問
Q. .pfx ファイルからインポートしたい
サーバ証明書(.pfx)からインポートする場合は、IIS マネージャーの「サーバ証明書」画面で「インポート...」を選択し、.pfx ファイルとパスワードを指定します。
Q. 「指定されたファイルが見つかりません」エラーが出ます
CSR を作成したサーバとは別のサーバで証明書をインポートしようとしている可能性があります。CSR 作成時に秘密鍵が IIS 内部に保存されているため、同じサーバで証明書をインポートする必要があります。
Q. 複数のサイトを同じ IP / ポート 443 で運用したい
IIS 8 以降では SNI(Server Name Indication)に対応しています。バインディング設定で「サーバ名表示が必要」にチェックを入れ、各サイトに異なるホスト名を設定すれば、同じ IP/ポートで複数の証明書を運用できます。
Q. 中間 CA 証明書はどこにインストールしますか?
IIS では通常、サーバ証明書をインポートすると中間 CA 証明書も自動的にインストールされます。手動でインストールしたい場合は、中間 CA 証明書を「中間証明機関」(Intermediate Certification Authorities)ストアにインポートします。
Q. HTTP/2 は IIS でサポートされていますか?
はい、Windows Server 2016 以降の IIS 10 は HTTP/2 を標準サポートしています。HTTPS 接続時に自動的に HTTP/2 で通信されます(クライアントが対応していれば)。