暗号化されていない HTTP 経由でデータを送信すると、データの漏洩やコンテンツの改ざんなどのセキュリティリスクが生じます。また、ブラウザがお客様のサイトを [保護されていない通信] としてマークし、ユーザーの信頼を損なう原因にもなります。Windows 用の Nginx サーバーに SSL 証明書をインストールすると HTTPS が有効になり、転送中のデータが保護され、Web サイトのセキュリティと信頼性が向上します。この Topic では、Windows の Nginx サーバーに SSL 証明書をインストールし、HTTPS が正しく機能することを確認する方法について説明します。
ご不明な点がある場合は、アカウントマネージャーにお問い合わせください。
使用上の注意
開始する前に、次の要件を満たしていることを確認してください。
証明書のステータス: 信頼できる認証局によって発行された SSL 証明書が必要です。証明書の有効期限が近いか、すでに有効期限が切れている場合は、まず SSL 証明書を更新する必要があります。
ドメイン名の一致: 証明書が保護したいすべてのドメイン名と一致していることを確認してください。ドメイン名を追加または変更するには、「公式証明書の購入」または「ドメイン名の追加と置換」ができます。
完全一致ドメイン名: 指定されたドメインにのみ適用されます。
example.comはexample.comのみを保護します。www.example.comはwww.example.comのみを保護します。
ワイルドカードドメイン名: その第一レベルのサブドメインにのみ適用されます。
*.example.comはwww.example.comやa.example.comなどの第一レベルのサブドメインに適用されます。*.example.comはルートドメインexample.comやa.b.example.comなどの複数レベルのサブドメインを保護しません。
説明複数レベルのサブドメインを一致させるには、ドメイン名のバインド フィールドに、
a.b.example.comなどの完全なドメイン、または*.b.example.comなどの対応するワイルドカードドメインを含める必要があります。サーバー権限:
Administratorアカウントまたは管理者権限を持つアカウントを使用する必要があります。ドメイン名の名前解決: ドメインの DNS レコードが設定され、サーバーのパブリック IP アドレスに解決されます。
環境依存関係: この Topic では、Windows Server 2025 と Nginx 1.28.0 を例として使用します。Nginx のインストールの例のディレクトリは
D:\nginx-1.28.0です。説明オペレーティングシステムまたは Web サーバーのバージョンによって、デプロイメントの手順が異なる場合があります。
手順
ステップ 1: SSL 証明書の準備
SSL 証明書サービスページに移動します。対象の証明書の 操作 列で、[証明書のダウンロード] をクリックします。ダウンロード タブで、サーバータイプ が Nginx の証明書をダウンロードします。
ダウンロードした証明書パッケージを解凍します。
パッケージに証明書ファイル (.pem) と秘密鍵ファイル (.key) が含まれている場合は、両方のファイルを保存します。これらはデプロイメントに必要です。
パッケージに証明書ファイル (.pem) のみが含まれ、秘密鍵ファイル (.key) が含まれていない場合は、ローカルに保存した秘密鍵ファイルを使用して証明書をデプロイする必要があります。
説明証明書を申請する際に OpenSSL や Keytool などのツールを使用して証明書署名リクエスト (CSR) ファイルを生成した場合、秘密鍵ファイルはローカルマシンにのみ保存されます。ダウンロードした証明書パッケージには秘密鍵は含まれません。秘密鍵を紛失した場合、証明書は使用できなくなります。再度商用証明書を購入し、新しい CSR と秘密鍵を生成する必要があります。
解凍した証明書ファイルと秘密鍵ファイルをサーバーにアップロードします。これらを安全な外部ディレクトリに保存します。この Topic で使用するパスの例は
D:\certです。説明以下の手順では、Alibaba Cloud Elastic Compute Service (ECS) を例として使用します。他の種類のサーバーについては、公式ドキュメントをご参照ください。
ECS コンソール - インスタンスに移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。
対象のインスタンスを見つけます。[接続] をクリックし、[今すぐサインイン] を選択します。プロンプトに従ってサーバーのデスクトップにログオンします。
サーバーの左下隅にある [スタート] メニューをクリックします。[この PC] を見つけて開きます。
[リダイレクトされたドライブとフォルダー] の下で、[*** 上のワークベンチ] をダブルクリックします。ローカルマシンから証明書ファイルをこのディレクトリにドラッグし、フォルダーを右クリックして [更新] を選択します。

証明書ファイルを
D:\certディレクトリにコピーします。重要インスタンスに再接続するか、インスタンスを終了すると、ワークベンチは容量を節約するために [リダイレクトされたドライブとフォルダー] ディレクトリからアップロードされたすべてのファイルを自動的にクリアします。このディレクトリはファイル転送専用です。ここにファイルを保存しないでください。
ステップ 2: システムとネットワーク環境の設定
セキュリティグループでポート 443 を開きます。
重要サーバーがクラウドプラットフォームにデプロイされている場合、そのセキュリティグループが TCP ポート 443 でのインバウンドアクセスを許可していることを確認してください。そうしないと、インターネットからサービスにアクセスできません。以下の手順では Alibaba Cloud ECS を例として使用します。他のクラウドプラットフォームについては、公式ドキュメントをご参照ください。
ECS インスタンスページに移動し、対象の ECS インスタンスがあるリージョンを選択し、インスタンス名をクリックしてインスタンスの詳細ページに移動します。
をクリックし、[認可ポリシー] が [許可]、[プロトコルタイプ] が TCP、[宛先ポート範囲] が HTTPS (443)、[認可オブジェクト] が [任意 (0.0.0.0/0)] に設定されたルールが存在することを確認します。
上記のルールが存在しない場合、詳細については、「セキュリティグループルールを追加する」をご参照ください。対象のセキュリティグループに対応するルールを追加します。
サーバーのファイアウォールでポート 443 を開きます。
Windows サーバーにログオンし、左下隅の [スタート] メニューをクリックして、[コントロールパネル] を開きます。
をクリックします。
ファイアウォールがオフの場合、次の図に示すように、これ以上の操作は必要ありません。

ファイアウォールがオンの場合は、次の手順に従って HTTPS ルールを許可します。
左側のナビゲーションウィンドウで、 をクリックし、[プロトコル] が TCP、[ローカルポート] が 443、[操作] が [ブロック] である受信ルールがあるかどうかを確認します。
そのようなルールが存在する場合は、それを右クリックして [プロパティ] を選択します。[全般] タブで、設定を [接続を許可する] に変更し、[適用] をクリックします。
ファイアウォールの構成の詳細については、「ファイアウォールルールを設定する」をご参照ください。
ステップ 3: Nginx サーバーに証明書をデプロイする
Nginx 設定ファイル (
nginx.conf) を開き、証明書の詳細を追加します (パスの例はD:\nginx-1.28.0\conf\nginx.confです)。ポート 443 をリッスンするサーバーブロックを追加します。
ポート 80 用の既存の
serverブロックを複製して、HTTPS 用の新しいブロックを作成します。リッスンポートをlisten 443 sslに変更し、ssl_certificateとssl_certificate_keyディレクティブを含む SSL 証明書設定を追加します。他のすべてのディレクティブは変更しないでください。# ポート 80 をリッスンする元のサーバーブロック。 server { listen 80; server_name yourdomain.com www.yourdomain.com; # その他の設定。 location / { proxy_pass http://127.0.0.1:8000; } } # ポート 80 の既存のサーバーブロックをコピーして、新しいサーバーブロックを作成します。 server { # 元の listen 80 を listen 443 ssl に変更します。 listen 443 ssl; # 元の server_name。この証明書でサポートされているドメイン名を追加できます。 server_name yourdomain.com www.yourdomain.com; # ======================= 証明書設定開始 ======================= # 証明書ファイルを指定します (中間証明書はこの .pem ファイルに連結できます)。次のパスを証明書ファイルの絶対パスに置き換えてください。 ssl_certificate D:\\cert\\example.com.pem; # 秘密鍵ファイルを指定します。次のパスを秘密鍵ファイルの絶対パスに置き換えてください。 ssl_certificate_key D:\\cert\\example.com.key; # パフォーマンスを向上させるために SSL セッションキャッシュを設定します。 ssl_session_cache shared:SSL:1m; # SSL セッションのタイムアウト期間を設定します。 ssl_session_timeout 5m; # 使用する TLS プロトコルタイプと暗号スイートをカスタマイズします (以下は設定例です。設定する必要があるかどうかを評価してください)。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 許可する TLS プロトコルバージョンを指定します。TLS バージョンが高いほど HTTPS 通信のセキュリティは向上しますが、低い TLS バージョンよりもブラウザの互換性が劣ります。 ssl_protocols TLSv1.2 TLSv1.3; # サーバー側で指定された暗号スイートを優先します ssl_prefer_server_ciphers on; # ======================= 証明書設定終了 ======================= # その他の設定。 }任意: HTTP から HTTPS への自動リダイレクトを設定します。
rewriteディレクティブを、ポート 80 をリッスンする元のserverブロックに追加します。server { listen 80; # 証明書にバインドされたドメイン名を入力します server_name <YOURDOMAIN>; # rewrite ディレクティブを使用して、すべての HTTP リクエストを HTTPS にリダイレクトします。 rewrite ^(.*)$ https://$host$1; location / { index index.html index.htm; } }次のコマンドを実行して、設定の変更を検証します。出力に
syntax is okとtest is successfulが表示された場合、設定は有効です。そうでない場合は、エラーメッセージに基づいて設定を修正してください。.\nginx.exe -t
Nginx サービスを再読み込みします。
Windows のコマンドラインを開き、Nginx のインストールディレクトリに移動して、次のコマンドを実行します。
.\nginx.exe -s reload
ステップ 4: デプロイメントの検証
Web ブラウザで HTTPS 経由でドメインにアクセスします。例:
https://yourdomain.com。yourdomain.comを実際のドメインに置き換えてください。ブラウザのアドレスバーにロックアイコンが表示されれば、証明書は正常にデプロイされています。アクセスエラーが発生した場合やロックアイコンが表示されない場合は、ブラウザのキャッシュをクリアするか、シークレット (プライバシー) モードで再試行してください。

バージョン 117 以降、Chrome のアドレスバーの
アイコンは新しい
アイコンに置き換えられました。このアイコンをクリックすると、ロック情報を表示できます。
問題が解決しない場合は、トラブルシューティングについて「よくある質問」をご参照ください。
本番稼働
本番環境にデプロイする際は、セキュリティ、安定性、保守性を向上させるために、以下のベストプラクティスに従ってください。
管理者以外のユーザーとして実行:
アプリケーション専用の低権限のシステムユーザーを作成します。管理者権限を持つアカウントでアプリケーションを実行しないでください。
説明推奨されるアプローチは、ゲートウェイレイヤーで SSL を設定することです。これには、Server Load Balancer (SLB) に証明書をデプロイすることが含まれます。ゲートウェイは HTTPS トラフィックを終端させ、復号化された HTTP トラフィックをバックエンドアプリケーションに転送します。
認証情報管理の外部化:
パスワードやその他の機密情報をコードや設定ファイルにハードコーディングしないでください。環境変数、Vault、またはクラウドプロバイダーのキー管理サービスを使用して認証情報を注入します。
HTTP から HTTPS へのリダイレクトの強制:
中間者攻撃を防ぐために、すべての HTTP トラフィックを HTTPS にリダイレクトします。
最新の TLS プロトコルの設定:
サーバー設定で古い安全でないプロトコル (SSLv3、TLSv1.0、TLSv1.1 など) を無効にします。TLSv1.2 と TLSv1.3 のみを有効にします。
証明書の監視と更新の自動化:
証明書をデプロイした後、ドメイン監視を有効にします。Alibaba Cloud は証明書の有効期間を自動的にチェックし、有効期限が切れる前に更新リマインダーを送信して、タイムリーな更新を支援し、サービスの中断を回避します。詳細な手順については、「パブリックドメイン名監視の購入と有効化」をご参照ください。
よくある質問
インストールまたは更新後、証明書が機能しない、または HTTPS にアクセスできないのはなぜですか?
この問題は、多くの場合、次のいずれかの設定上の問題が原因です。順番に確認してください。
ポート 443 がブロックされている: サーバーのセキュリティグループまたはファイアウォールでポート 443 が開いていません。詳細については、「システムとネットワーク環境の設定」をご参照ください。
ドメインの不一致: アクセスしているドメインが証明書の ドメイン名のバインド にリストされていません。詳細については、「ドメイン名の一致」をご参照ください。
Nginx が再読み込みされていない: Nginx 設定ファイルの変更後に Nginx サービスが再読み込みされていません。詳細については、「Nginx サービスを再読み込みする」をご参照ください。
証明書の設定が正しくない: 証明書ファイルが正しく置き換えられていないか、Nginx 設定で証明書パスが正しく指定されていません。使用中の Nginx 設定ファイルと証明書ファイルが最新で有効であることを確認してください。
他のサービスに証明書がない: ドメインが Content Delivery Network (CDN)、Server Load Balancer (SLB)、Web Application Firewall (WAF) などのサービスを使用している場合、それらのサービスにも証明書をインストールする必要があります。詳細については、「トラフィックが複数の Alibaba Cloud サービスを通過する場合の証明書デプロイメントの場所」をご参照ください。セットアップを完了します。
複数のサーバーへのデプロイメントが不完全: ドメインの DNS が複数のサーバーに解決される場合、証明書はそれらすべてにインストールする必要があります。
さらなるトラブルシューティングについては、「ブラウザのエラーメッセージに基づく証明書デプロイメントの問題解決」および「SSL 証明書デプロイメントのトラブルシューティングガイド」をご参照ください。
Nginx サーバー上の既存の SSL 証明書を正しく更新または置換するにはどうすればよいですか?
Nginx 上の SSL 証明書を更新するには、古い証明書と秘密鍵ファイルを新しいものに置き換え、Nginx サービスを再読み込みする必要があります。
バックアップ: サーバー上の既存の証明書 (
.pem) と秘密鍵 (.key) ファイルをバックアップします。ダウンロード: Certificate Management Service コンソールから新しい証明書ファイルをダウンロードします。
アップロード: 新しいファイルをサーバーにアップロードし、古いファイルを上書きします。ファイルパスと名前が
nginx.confで指定されているものと同一であることを確認してください。再読み込み: Nginx のインストールディレクトリから
.\nginx.exe -s reloadを実行して、Nginx サービスを再読み込みし、変更を適用します。
一部のブラウザで「証明書が標準を満たしていません」という警告が表示されるのを防ぐために、Nginx で TLSv1.0 と TLSv1.1 を無効にするにはどうすればよいですか?
Nginx 設定の ssl_protocols ディレクティブを変更して、最新の安全なバージョンのみを含めることで、安全でない TLS プロトコルを無効にできます。
nginx.confファイルを開き、HTTPS サイト (ポート 443 でリッスン) のserverブロックを見つけます。ssl_protocolsディレクティブを見つけるか追加し、ssl_protocols TLSv1.2 TLSv1.3;に設定します。ファイルを保存し、
.\nginx.exe -s reloadを実行して設定を適用します。
Windows で Nginx サーバーの起動または再読み込みが bind() to 0.0.0.0:443 failed エラーで失敗するのはなぜですか?
このエラーは、Nginx がバインドしようとしているポート 443 を別のプロセスがすでに使用していることを意味します。これはポートの競合の問題です。
ポート 443 を使用しているプロセスを特定するには、コマンドプロンプトまたは PowerShell を開き、
netstat -ano | findstr ":443"を実行します。出力の最後の列に、競合しているサービスのプロセス ID (PID) が表示されます。
競合しているサービスを停止します。タスクマネージャーを使用して PID でタスクを終了するか、対応するアプリケーション (別の Web サーバーなど) を停止できます。
ポート 443 が解放されたら、Nginx の起動または再読み込みを再度試みてください。
Nginx サーバーで HTTPS を有効にした後、ブラウザに安全なロックアイコンではなく Mixed Content 警告が表示されるのはなぜですか?
Mixed Content 警告は、HTTPS ページが安全でない HTTP 接続を介してリソース (画像、スクリプト、スタイルシートなど) を読み込もうとするときに発生します。これを修正するには、すべてのリソースが HTTPS 経由で読み込まれるようにする必要があります。
Web サイトのソースコード (HTML、CSS、JavaScript) を検査します。
http://、<img>、<link>などのタグでハードコードされた<script>リンクを検索します。これらのリンクを更新して
https://を使用するか、できればプロトコル相対 URL (例://example.com/asset.js) またはルート相対パス (例:/images/logo.png) を使用します。