Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

無料のLet'sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

このガイドでは、Windows Server2019/2016/2012R2で実行されているIISWebサーバー上のサイトに無料のTLS/SSL Let’sEncrypt証明書をインストールしてバインドする方法を示します。

内容:

  • Windows用のクライアントを暗号化してACMEしましょう
  • WindowsServerのIISにLet'sEncryptTLS証明書をインストールするWACSClint
  • IISURL書き換えを使用してHTTPからHTTPSにリダイレクトする
  • RDSゲートウェイとWebアクセスでLet'sEncrypt証明書を使用する

Windows用のクライアントを暗号化してACMEしましょう

WebサイトのTLS/SSL証明書を使用すると、パブリックネットワークを介して転送されるユーザーデータを中間者( MITM )から保護できます。 )攻撃し、データの整合性を提供します。非営利認定センターLet'sEncrypt APIを使用してHTTPS暗号化用の無料のX.509暗号化TLS証明書を自動的に発行できます。 90日で有効期限が切れるドメイン検証用の証明書のみが発行されます(1週間に1つのドメインに対して50の証明書の制限があります)。ただし、簡単なスケジュールを使用して、WebサイトのSSL証明書を自動的に更新できます。

証明書を自動的に発行するLet’s Encrypt APIインターフェースは、自動証明書管理環境と呼ばれます。 ( ACME )API。 Windowsシステム用の最も一般的なACMEAPIクライアントの実装は3つあります。

  1. Windows ACME Simple(WACS) SSL証明書をインタラクティブに発行し、IISWebサーバー上の特定のサイトにバインドするためのコマンドプロンプトツールです。
  2. PowerShell ACMESharp モジュール– ACME APIを介してLet’sEncryptサーバーと対話するための多数のコマンドレットを備えたPowerShellライブラリです。
  3. 認証 は、ACMEAPIを使用してSSL証明書をインタラクティブに管理するためのWindowsグラフィックツールです。

WindowsServerのIISにLet'sEncryptTLS証明書をインストールするWACSClint

Let’s EncryptからSSL証明書を取得する最も簡単な方法は、コンソールツール Windows ACME Simpleを使用することです。 ( WACS )(以前は LetsEncrypt-Win-Simpleと呼ばれていたこのプロジェクト )。これは、IISで実行されているWebサイトの1つを選択し、SSL証明書を自動的に発行してバインドできるシンプルなウィザードです。

Windows Server2016でIISWebサイトを実行しているとします。タスクは、Let’s Encryptから無料のSSL証明書をインストールして、WebサイトをHTTPSモードに切り替えることです。

GitHub https://github.com/PKISharp/win-acme/releasesからWACSクライアントの最新リリースをダウンロードします(私の場合、これはバージョンv2.0.10です。ファイル名はwin-acme.v2です。 .0.10.444.zip

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

IISがインストールされているサーバー上の次のディレクトリにzipアーカイブを抽出します:c:\inetpub\letsencrypt

Win-Acmeを使用するには、.NET Framework 4.7.2以降をインストールする必要があります(インストールされている.NET Frameworkのバージョンを確認する方法は?)。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

管理者特権のコマンドプロンプトを開き、c:\ inetpub\letsencryptディレクトリに移動してwacs.exeを実行します 。これにより、インタラクティブなLet’sEncrypt証明書の生成とIISサイトウィザードへのバインドが開始されます。新しい証明書をすばやく作成するには、 N:を選択します – 新しい証明書を作成する(IISの場合は簡単)

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

次に、証明書の種類を選択する必要があります。この例では、エイリアス(複数のSAN –サブジェクト代替名)を持つ証明書を使用する必要がないため、アイテム1を選択するだけです。 IISサイトのシングルバインディング 。ワイルドカード証明書が必要な場合は、オプション 3を選択します 。

次に、ユーティリティはIISで実行されているWebサイトのリストを表示し、証明書を発行するサイトを選択するように求めます。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

証明書の更新の問題やその他の重要なメッセージや不正使用に関する通知の送信先となる電子メールアドレスを指定します(複数の電子メールアドレスをコンマで区切って指定できます)。利用規約に同意する必要があり、Windows ACME SimpleはLet’s Encryptサーバーに接続し、Webサイトの新しいSSL証明書を自動的に生成しようとします。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

IIS用のSSLLet’sEncrypt証明書を生成してインストールするプロセスは完全に自動化されています。

デフォルトでは、ドメイン検証は http-01検証(SelfHosting)で実行されます モード。これを行うには、Webサーバーを指すドメインDNSレコードが必要です。 WACSを手動モード(フルオプション)で実行する場合、検証タイプを選択できます– 4 [http-01] IISで一時アプリケーションを作成する(推奨) 。この場合、Let’sEncryptサーバーがドメイン検証を実行できるIISWebサーバー上に小さなアプリケーションが作成されます。

。 TLS / HTTP検証中、HTTP(80 / TCP)およびHTTPS(443 / TCP)プロトコルを介した完全なDNS名によってインターネットからサイトにアクセスできる必要があります。

WACSツールは、証明書の秘密鍵(* .pem)、証明書自体、およびその他の多くのファイルを C:\ Users \%username%\ AppData \ Roaming\letsencrypt-win-simple<に保存します。 / em> 。次に、バックグラウンドで生成されたLet’s Encrypt SSL証明書をインストールし、IISサイトにバインドします。サイトにSSL証明書(自己署名証明書など)がインストールされている場合は、新しい証明書に置き換えられます。

IISマネージャーで、サイトバインディングを開きます Webサイトの設定を行い、 Let’s Encrypt Authority X3によって発行された証明書を使用していることを確認します。 。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

Windowsの信頼されたルート証明機関を更新した場合、この証明書はコンピューター上で信頼できるものとして表示されます。

Let’s Encrypt IIS証明書は、コンピューター証明書ストアのWebホスティング->証明書にあります。 。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

Windows ACME Simpleは、Windowsタスクスケジューラに新しいジョブを作成します(win-acme-renew (acme-v02.api.letsencrypt.org) )証明書を自動的に更新します。タスクは毎日開始され、証明書の更新は60日後に実行されます。このタスクは次のコマンドを実行します:

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

同じコマンドを使用して、Let’sEncrypt証明書を手動で更新できます。

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

IISURL書き換えを使用してHTTPからHTTPSにリダイレクトする

すべての着信HTTPトラフィックをHTTPSWebサイトURLにリダイレクトするには、MicrosoftURL書き換えモジュールをインストールします。 (https://www.iis.net/downloads/microsoft/url-rewrite)、およびサイト設定で[SSLが必要]オプションが無効になっていることを確認します。次に、書き換えルールを使用してweb.configでリダイレクトを構成します。

<system.webServer>
<rewrite>
<rules>
<rule name=”HTTP to HTTPS Redirect” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”off” ignoreCase=”true” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>

IISマネージャーGUIを介してURL書き換え拡張機能を使用してトラフィックリダイレクトを構成することもできます。 サイトを選択します ->あなたのサイト名 ->URL書き換え

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

新しいルールを作成するルールを追加する ->空白のルール

ルール名を指定し、次のパラメーター値を変更します。

  • リクエストされたURL :パターンに一致
  • 使用 :正規表現
  • パターン :(。*)

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

条件 セクションで、論理グループ化を変更します :すべて一致し、追加をクリックします 。次の設定を指定します:

  • 条件入力: {HTTPS}
  • 入力文字列かどうかを確認します: パターンに一致する
  • パターン: ^ OFF $

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

次に、アクションブロックで次を選択します:

  • アクションタイプ: リダイレクト
  • リダイレクトURL :https:// {HTTP_HOST} / {R:1}
  • リダイレクトタイプ :永続的(301)

ブラウザを開き、HTTPアドレスを使用してサイトを開こうとします。 HTTPSURLに自動的にリダイレクトされます。

RDSゲートウェイとWebアクセスでLet'sEncrypt証明書を使用する

RDSゲートウェイまたはRDSWebアクセスを使用して外部ユーザーを企業ネットワークに接続する場合は、自己署名証明書の代わりにLet’sEncryptの信頼できるSSL証明書を使用できます。 Let’sEncrypt証明書を正しくインストールしてWindowsServerのリモートデスクトップサービスを保護する方法を検討してください。

RDSHの役割がリモートデスクトップゲートウェイサーバーにもインストールされている場合は、管理者以外のユーザーがWACSファイル(私の例ではc:\ inetpub \letsencrypt)が含まれるディレクトリにアクセスできないようにする必要があります。 C:\ ProgramData \ win-acme)が保存されます。

次に、上記のように、RDゲートウェイサーバーでwacs.exeを実行します。目的のIISサイトを選択します(通常はデフォルトのWebサイト 。 Let's Encryptは、新しい証明書を発行してIIS Webサイトにバインドし、証明書の自動更新タスクがタスクスケジューラに表示されます。

この証明書を手動でエクスポートし、SSLバインディングを介して必要なRDSサービスにバインドできます。ただし、Let’s Encrypt証明書が更新されると、60日ごとにこれらの手順を手動で実行する必要があります。

Let’s Encrypt証明書を更新した後、PowerShellスクリプトを使用して、SSL証明書をRDSゲートウェイに自動的にバインドできます。

win-acmeにはすぐに使えるPowerShellスクリプトがあります プロジェクト– ImportRDGateway.ps1 https://github.com/PKISharp/win-acme/tree/master/dist/Scripts )。これにより、リモートデスクトップサービス用に選択したSSL証明書をインストールできます。このスクリプトの主な欠点は、新しい証明書の指紋を手動で指定する必要があることです。

ImportRDGateway.ps1 <certThumbprint>

指定されたIISサイトから証明書のフィンガープリントを自動的に取得するには、変更されたスクリプト ImportRDGateway_Cert_From_IIS.ps1を使用します。 (ImportRDGateway.ps1に基づく)

このスクリプトは手動で実行できます:

powershell -File ImportRDGateway_Cert_From_IIS.ps1

RDSゲートウェイがインデックス0のIIS「デフォルトWebサイト」で実行されている場合は、変更せずにスクリプトを使用できます。

IISでサイトIDを取得するには、PowerShellコンソールを開いて次のコマンドを実行します。

Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする ID列には、サイトのインデックスが表示されます。サイトから1を引いてください。結果のインデックスは、 0の代わりに指定する必要があります PowerShellスクリプトの27行目:

$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

次に、 win-acme-renewを開きます スケジューラタスク、およびアクション タブは、SSL証明書を更新した後にImportRDGateway_Cert_From_IIS.ps1スクリプトを実行する新しいタスクを追加します。

PowerShell実行ポリシーを変更しないために、次のコマンドでスクリプトを実行できます。

PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1

無料のLet sEncryptTLS/SSL証明書をIISWebサーバー/RDSにインストールする

これで、SSL証明書をRDSにバインドするためのスクリプトが、Let’sEncrypt証明書が更新された直後に実行されます。この場合、RDゲートウェイサービスは次のコマンドで自動的に再起動されます:

Restart-Service TSGateway

[aler] TSGatewayサービスが再起動すると、現在のすべてのユーザーセッションが切断されるため、60日に1回証明書更新タスクを起動する頻度を変更することをお勧めします。[/ alert]


  1. Let’sEncryptから無料のワイルドカードSSL証明書を取得する方法

    現在、Webトラフィックの大部分はHTTPSを使用して暗号化されています。特に、業界の主要企業がサポートする認証局(CA)であるLet’s Encryptが導入されて以来、ますます普及してきています。 Let’s Encryptは、SSL/TLS証明書を完全に無料で90日間有効に提供します。 通常、証明書は1つ以上の特定のドメイン名に関連付けられているため、「www.example.com」の証明書がある場合は、この正確なドメイン名でのみ使用できます。一方、ワイルドカード証明書は親ドメイン名に対して発行され、親ドメインの任意のサブドメインで使用できます。たとえば、*。example.comの

  2. 無料のSSL証明書は商用のものよりも優れていますか?

    Web全体で暗号化の使用が増加しているため、人々はそれを信頼と関連付け始めています。もちろん、これは雪だるま式の効果を生み出し、より多くのWebサイトがSSL/TLS暗号化を採用するインセンティブを感じて遅れないようにしました。特にEコマースサイトは、顧客が暗号化なしでオンラインで取引を行うことを警戒しているため、プレッシャーを最初に感じたサイトの1つでした。 エンティティが所有するWebサイトに関して言えば、暗号化は、オンラインプロセスを保護するために使用される単なるアルゴリズム以上のものになります。これはより複雑な問題であり、認証局(CA)とさまざまなレベルの承認があります。現在、Let