Azure DevOps オンプレミス用に SECURE Sockets Layer (SSL) を使用して HTTPS を設定する

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

Azure DevOps Server のデプロイのセキュリティを強化するには、Secure Sockets Layer (SSL) でハイパーテキスト転送プロトコル Secure (HTTPS) を使用するように構成します。 デプロイのセキュリティを最大化するこのプロトコルを要求するか、既定のプロトコルである HTTP に加えて SSL を使用して HTTPS をサポートするかを選択できます。 Visual Studio 2013 のリリース管理を使用する場合は、SSL で HTTPS を使用するように構成することもできますが、SSL で HTTP と HTTPS の両方をサポートするように構成することはできません。

構成を選択する前に、ここで説明する長所と短所を確認してください。 組織のセキュリティ ニーズに最も適した構成を特定したら、このトピックの手順に従って展開を構成します。

このトピックの内容

HTTP に加えて SSL で HTTPS をサポートする利点

両方のプロトコルをサポートするように Azure DevOps Server のデプロイを構成した場合、SSL を使用して HTTPS 用に構成されているコンピューターを持つユーザーは、そのプロトコルを使用して接続するため、デプロイのセキュリティが強化されます。 さらに、コンピューターが HTTP 用にのみ構成されているユーザーは、引き続き展開に接続できます。 パブリック ネットワーク経由でこの構成を展開しないでくださいが、制御されたネットワーク環境で引き続き HTTP 接続をサポートすることで、次の利点を得ることができます。

  • スケジュールに従って SSL を使用して HTTPS 用のクライアント コンピューターを構成することで、時間の経過と共に展開のセキュリティを強化できます。 段階的なアプローチを使用する場合は、すべてのコンピューターを同時にアップグレードする必要はありません。また、コンピューターがまだアップグレードされていないユーザーは、引き続き展開に接続できます。

  • Azure DevOps Server をより簡単に構成して管理できます。

  • ある Web サービスから別の Web サービスへの呼び出しは、SSL を使用した HTTPS 経由よりも HTTP 経由の方が高速です。 そのため、パフォーマンス要件がセキュリティ リスクを上回るクライアント コンピューターからの HTTP 接続を引き続きサポートできます。

すべての接続に SSL を使用して HTTPS を要求する利点

すべての接続に SSL を使用する HTTPS が必要な場合は、次の利点があります。

  • Azure DevOps のアプリケーション層、データ層、およびクライアント層間のすべての Web 接続は、証明書が必要なため、より安全です。

  • プロジェクト フェーズの終了時に証明書の有効期限が切れるよう構成することで、アクセスをより簡単に制御できます。

SSL で HTTPS をサポートまたは要求する場合の欠点

SSL で HTTPS をサポートまたは要求するように Azure DevOps Server を構成する前に、次の欠点を考慮する必要があります。

  • 進行中の管理タスクが複雑になる可能性があります。 たとえば、サービス パックやその他の更新プログラムを適用する前に、SSL での HTTPS のサポートを停止するようにデプロイを再構成する必要がある場合があります。

  • 証明機関 (CA) と証明書の信頼を構成するだけでなく、管理する必要もあります。 Windows Server 2003 および Windows Server 2008 では証明書サービスを使用できますが、セキュリティで保護された公開キー 基盤 (PKI) を展開するために必要な時間とリソースを投資したくない場合があります。

  • これらの構成の設定とテストにかなりの時間を費やす必要があり、デプロイのトラブルシューティングが難しくなります。

  • 両方のプロトコルを引き続きサポートする場合、Azure DevOps のアプリケーション層が適切にセキュリティ保護されていない場合、外部接続が暗号化されない可能性があります。

  • SSL で HTTPS が必要な場合は、デプロイのパフォーマンスが低下します。

SSL を使用して HTTPS をサポートまたは要求するようにデプロイを構成する

このトピックの手順では、Azure DevOps Server の SSL 接続に必要な証明書を要求、発行、および割り当てる 1 つのプロセスについて説明します。 このトピックで説明されているものとは異なるソフトウェアを使用している場合は、異なる手順を実行する必要がある場合があります。 Azure DevOps Server デプロイへの外部接続をサポートするには、基本認証、ダイジェスト認証、またはその両方を インターネット インフォメーション サービス (IIS) で有効にする必要もあります。

このトピックの手順に従って、次のタスクを実行します。

  1. Azure DevOps Server とその Web サイトをデプロイするための証明書を取得します。

  2. 証明書をインストールして割り当てます。

  3. Azure DevOps Server を構成します。

  4. Team Foundation Build を構成します。

  5. Visual Studio 2013 のリリース管理を構成する

  6. クライアント コンピューターを構成します。

前提条件

このトピックの手順を実行するには、まず次の要件を満たす必要があります。

  • Azure DevOps サーバー自体の場合、必ずしも構成されているわけではありませんが、Azure DevOps のデータ層とアプリケーション層の論理コンポーネントをインストールする必要があります。 これらの層には、IIS、SQL Server、および Team Foundation Build や SQL Server Reporting Services など、統合されている可能性のある追加コンポーネントが含まれます。

    このトピックの手順では、Azure DevOps のアプリケーションおよびデータ層で論理コンポーネントを実行しているサーバーを参照します。 アプリケーション層とデータ層は、Azure DevOps Server インストール ガイド 説明されているように、同じサーバーまたは複数のサーバーで実行されている可能性があります

  • 証明書を発行できる証明機関 (CA) を持っているか、信頼されたチェーンを持つサード パーティの証明機関をサブスクライブしている必要があります。 このトピックでは、CA として証明書サービスを使用していることを前提としていますが、展開用に構成した任意の CA、または信頼されたサード パーティ証明機関の証明書を使用できます。 証明機関がない場合は、証明書サービスをインストールして構成できます。 詳細については、Microsoft Web サイトの次のドキュメント セットのいずれかを参照してください。

  • デプロイのすべてのコンポーネントを HTTPS および SSL 用に構成するには、管理者である必要があります。 異なるユーザーが個々のコンポーネントの管理アクセス許可を持つ分散デプロイで作業する場合は、それらのユーザーと調整して構成を完了する必要があります。

  • 具体的には、Team Foundation Administrators グループに属している必要があります。また、Team Foundation 用のアプリケーション層、データ層 Azure DevOps プロキシ サーバーの Administrators グループに属している必要があります。

  • ビルド サーバーを構成するには、そのサーバーの Administrators グループに属している必要があります。

  • リリース管理を構成するには、リリース管理サーバーをホストするサーバーの Administrators グループに属し、リリース管理の Release Manager ロールのメンバーである必要があります。

  • 展開でレポートを使用する場合は、管理セキュリティ グループのメンバーであるか、レポート サービスを構成するための同等のアクセス許可が個別に設定されている必要があります。

    アクセス許可の詳細については、「 Azure DevOps Server のPermission リファレンスを参照してください。

前提条件

このトピックの手順では、次の条件が当てはまることを前提としています。

  • データ層とアプリケーション層のサーバーは、セキュリティで保護された環境にインストールおよび展開され、セキュリティのベスト プラクティスに従って構成されています。

  • PKI の構成と管理、証明書の要求、発行、割り当ての方法について理解している。

  • 開発環境のネットワーク トポロジに関する実用的な知識があり、ネットワーク設定、IIS、SQL Server の構成に慣れている。

証明書の取得

SSL で HTTPS を使用するように Azure DevOps Server を構成する前に、デプロイ内のサーバーのサーバー証明書を取得してインストールする必要があります。 サーバー証明書を取得するには、独自の証明機関をインストールして構成するか、信頼する外部組織の証明機関 (サード パーティの証明書) を使用する必要があります。

証明機関をインストールする方法の詳細については、Microsoft Web サイトの次のトピックを参照してください。

証明書を使用した Web サイトの要求、インストール、構成

証明機関に参加したら、IIS マネージャーを使用して証明書を要求するか、展開内の次の各サーバーに証明書を手動でインストールする必要があります。

  • 各アプリケーション層サーバー。
  • デプロイ用に構成されている場合は、Azure DevOps プロキシ サーバーを実行している各サーバー。
  • デプロイ用に構成されている場合、Team Foundation Build Service をビルド コントローラーまたはビルド エージェントとして実行している各サーバー。
  • Reporting Services を実行しているサーバー (展開用に構成されている場合)。

さらに、展開内のクライアント コンピューターを証明書チェーンに登録し、必要な証明書を要求する必要があります。 リリース管理を使用している場合は、リリース管理クライアントを実行しているコンピューターと、リリース環境で展開エージェントを実行しているクライアント¹ が含まれます。 1 つ以上のプロジェクトでバージョン管理に Git を使用している場合、それらのプロジェクトのユーザーは、クライアント証明書を認識して使用するようにコンピューター上で Git を構成する必要もあります。 特定の CA からクライアント証明書を要求する方法については、その証明機関のドキュメントを参照してください。

¹ クライアントとサーバーはここで個別に呼び出されますが、これはこのドキュメントの規則にすぎません。 展開エージェントを実行しているコンピューターには、証明書がインストールされている必要があります。

  1. [インターネット インフォメーション サービス (IIS) マネージャー] を開きます。

  2. サーバーを展開し、 Server Certificates に移動し、証明書要求を作成して完了します。

    IIS マネージャーを開き、証明書を要求する

    要求を作成してから完了する

    詳細については、「 IIS でのサーバー証明書の構成」を参照してください。

  3. 証明書をインポートします。

  4. 次に、この証明書を必要とする各 Web サイトを適切な設定で構成する必要があります (リリース管理 Web サイトを除き、後で構成します)。 具体的には、次の各 Web サイトでこれを行う必要があります。

    • 既定の Web サイト
    • Azure DevOps Server
    • Azure DevOps サーバー プロキシ (デプロイで使用されている場合)

    構成する Web サイトをホストする各サーバーで、インターネット インフォメーション サービス (IIS) マネージャーを開きます。

  5. ComputerName展開し、Sitesを展開し、構成する Web サイトのサブメニュー (Azure DevOps Server など) を開き、[操作] ウィンドウで [Bindings を選択します。

    すべてのサイトのバインドを構成する必要があります

  6. サイト バインドで、[追加] 選択

    [サイト バインドの追加] ダイアログ ボックスが表示されます。

  7. Type一覧で [https を選択します。

    Portで、別のポート番号を入力します。

    重要

    SSL 接続の既定のポート番号は 443 ですが、既定の Web サイト、Azure DevOps Server、Azure DevOps Server プロキシ (デプロイで使用する場合) の各サイトに一意のポート番号を割り当てる必要があります。 構成する各 Web サイトの SSL ポート番号を記録する必要があります。 これらの番号は、Azure DevOps の管理コンソールで指定する必要があります。

    SSL 証明書で、インポートした証明書を選択し、OKを選択して[バインド] ページを閉じます。

    必ず一意のポート番号を選択してください

  8. 構成している Web サイトの Home ページで、 Features ビューを開きます。

  9. [ IIS で、 [認証] を選択します。

  10. 構成する認証方法を選択し、そのサブメニューを開き、セキュリティニーズに最適な方法で追加の構成を有効、無効、または実行します。 たとえば、匿名認証を無効にする場合は、匿名認証方法を選択し、[アクション] メニューから [無効] を選択します。

    メソッドを選択し、実行するアクションを選択します。

  11. 構成が完了したら、Web サービスを再起動します。

ファイアウォールの構成

IIS で指定した SSL ポート経由のトラフィックを許可するようにファイアウォールを構成する必要があります。 詳細については、ファイアウォールのドキュメントを参照してください。

重要

別のコンピューターから指定したポートでトラフィックをテストしてください。 既定の Web サイトまたは Web ポータルにアクセスできない場合は、IIS でこれらの Web サイトに対して指定したポート設定を再確認し、それらのポートでトラフィックを許可するようにファイアウォールが適切に構成されていることを確認します。

SQL Server Reporting Services の構成

デプロイでレポートを使用する場合は、SSL で HTTPS をサポートし、AZURE DevOps Server の IIS で指定したポートを使用するように SQL Server Reporting Services を構成する必要があります。 それ以外の場合、レポート サーバーは展開に対して正しく機能しません。 詳細については、「 Secure Sockets Layer (SSL) 接続用のレポート サーバーの構成を参照してください。

ヒント

デプロイでレポートが使用されていない場合は、この手順をスキップできます。

Azure DevOps Server の HTTPS の構成

既定の Web サイトと Azure DevOps Server Web サイト用に IIS で構成した HTTPS ポートと値を使用して Azure DevOps Server のデプロイを構成するには、次の手順に従います。

HTTPS を使用または要求するように Azure DevOps Server を再構成するには

  1. Azure DevOps の管理コンソールを開き、アプリケーション層ノードを参照します。

  2. アプリケーション層の概要で、[URL の変更] 選択

    Change URL ウィンドウが開きます。

  3. Notification URL に、IIS の Azure DevOps Server Web サイト用に構成した HTTPS URL を入力します。

    たとえば、ポート 444 を使用するように Web サイトを構成したとします。 この場合は、「https://ServerName:444/tfs」と入力します。 localhost の代わりに、サーバーの完全修飾ドメイン名を使用してください。

    アドレスに HTTPS、サーバー、ポートを指定する

  4. Test を選択します。 テストに合格しない場合は OK を選択しないでください。 戻って、正しい URL とポート情報を入力し、すべてのファイアウォールがそれらのポートのトラフィックを許可するように構成されていること、およびサイトが IIS マネージャーで使用可能で実行されていることを確認します。

  5. HTTPS を要求するには、Server URLUse を選択し、Azure DevOps Server Web サイト用に構成した HTTPS URL を入力します。

    localhost の代わりに、サーバーの完全修飾ドメイン名を使用してください。

  6. Test を選択し、テストに合格した場合は OK を選択します。

  7. デプロイで Reporting Services を使用している場合は、管理コンソールで [ Reporting を選択します。 それ以外の場合は、この手順の残りの部分をスキップします。

  8. Reporting編集を選択します。

    [オフラインにする] ダイアログ ボックスが開いたら、[OK を選択します。

    Reporting ウィンドウが開きます。

  9. Reports タブを選択します。レポート サーバーの URLで、Web ServiceReport Manager の HTTPS URL を入力しOK を選択します。

デプロイへのアクセスをテストする

変更が期待どおりに機能しているかどうかをテストする必要があります。 この手順は省略可能ですが、強くお勧めします。

デプロイへのアクセスをテストするには

  1. アプリケーション層をホストしていないコンピューターで、Web ブラウザーを開き、チームのホーム ページに移動します。

  2. 管理ページを含め、Web ポータルからチームとプロジェクトにアクセスできるかどうかを確認します。

  3. Web ポータルからデプロイにアクセスできない場合は、完了した手順を確認し、すべての構成変更が正しく行われていることを確認します。

SSL を使用して HTTPS を要求するようにデプロイを構成する (省略可能)

SSL で HTTPS を使用するには、Azure DevOps Server アプリケーション層へのすべての接続を要求できます。 この追加のセキュリティは省略可能ですが、推奨されます。

SSL 接続を要求するには

  1. 構成する Web サイトをホストするサーバーで、Start を選択し、Administrative Tools を選択してから、インターネット インフォメーション サービス (IIS) マネージャーを選択します。

  2. IIS のバージョンに適した手順に従います。

    IIS 7.0 を使用する展開の場合:

    1. ComputerNameを展開し、Web サイトを展開し、構成する Web サイトを選択します。

    2. その Web サイトのホーム ページで、[SSL 設定を選択します。

    3. SSL 設定 ペインで、[SSL を取得する] チェック ボックスをオンにします。

      (省略可能)[ Require 128 ビット SSL ] チェック ボックスをオンにします。

    4. Client 証明書で、展開のセキュリティ要件に応じて、IgnoreAccept、または Require を選択します。

    5. Actionsで、[Apply] を選択します。

    6. SSL を必要とする Web サイトごとに、これらの手順を繰り返します。

ビルド サーバーへの証明書のインストール

1 つ以上のサーバーに Team Foundation Build Service をインストールした場合は、各サーバーの信頼されたルート証明機関ストアに証明書をインストールする必要があります。 詳細については、「 証明書の保護証明書を使用した Web サイトの要求、インストール、および構成 前のトピックを参照してください。 コントローラーとエージェントの両方に、HTTPS 接続で自身を識別するための秘密キーを持つ証明書が必要です。

Note

SSL 経由でビルドを実行するには、ビルド コントローラーとビルド エージェントの両方の信頼されたルート ストアに証明書をインストールする必要があります。

ビルド構成の更新

SSL 接続用に Team Foundation Build を構成するには、アプリケーション層用に構成した HTTPS URL とビルド構成でサポートされるコレクションを使用するようにビルド サービスを構成する必要があります。 この URL は、デプロイ内のビルド構成ごとに構成する必要があります。

HTTPS を使用するようにビルド構成を変更するには

  1. 構成するビルド構成をホストするサーバーで、Team Foundation の管理コンソールを開きます。

  2. Team Foundation で、サーバーの名前を展開し、Build 構成を選択します。

    Build 構成 ペインが表示されます。

  3. サービス構成で Stop を選択し、 Properties を選択します。

    Build サービスのプロパティダイアログ ボックスが開きます。

  4. Communicationsで、プロジェクト コレクションの URL で正しい HTTPS アドレスと完全なサーバー名が使用されていることを確認します。

  5. ローカル ビルド サービス エンドポイント (受信) で、Change を選択します。

    Build サービス エンドポイント ダイアログ ボックスが開きます。

  6. Endpoint の詳細で、ポート番号が構成の詳細と一致することを確認します。

  7. Protocolで、[HTTPS を選択します。

  8. SSL 証明書一覧で、この展開で使用するためにインストールして構成した証明書を選択し、OKを選択します。

    構成の詳細が一致していることを確認します

  9. Build サービスのプロパティダイアログ ボックスで、Start を選択します。

クライアント コンピューターの構成

ユーザーが Azure DevOps にアクセスするすべてのクライアント コンピューターで、証明書をローカルにインストールし、そのコンピューターから Azure DevOps にアクセスしたユーザーのクライアント キャッシュをクリアする必要があります。 そうしないと、ユーザーはそのコンピューターから Azure DevOps に接続できなくなります。 詳細については、「 信頼されたルート証明書の管理」を参照してください。

重要

Azure DevOps Server と Azure DevOps の 1 つ以上のクライアントの両方を実行しているコンピューターについては、この手順に従わないでください。

クライアント コンピューターに証明書をインストールするには

  1. そのコンピューターの Administrators グループに属するアカウントを使用して、コンピューターにログオンします。

  2. ローカル コンピューターの信頼されたルート証明機関フォルダーに証明書をインストールします。

クライアント コンピューターのキャッシュをクリアするには

  1. キャッシュをクリアするユーザーの資格情報を使用して、コンピューターにログオンします。

  2. Visual Studio の開いているインスタンスをすべて閉じます。

  3. ブラウザー ウィンドウで、次のフォルダーを開きます。

    Drive :\Users\ UserName \AppData\Local\Microsoft\Team Foundation\4.0\Cache

  4. キャッシュ ディレクトリの内容を削除します。 すべてのサブフォルダーを削除してください。

  5. Start を選択し、Run を選択し、「devenv /resetuserdata」と入力して、OK を選択します。

  6. そのコンピューターから Team Foundation にアクセスしたすべてのユーザーのアカウントに対して、これらの手順を繰り返します。

    Note

    キャッシュをクリアするための手順をすべての Azure DevOps ユーザーに配布して、自分でキャッシュをクリアできるようにする必要がある場合があります。

再構成された展開にクライアント コンピューターを接続するには

Git の構成

既定では、バージョン管理に Git を使用するプロジェクトは、Azure DevOps Server 用に構成した SSL 証明書の検証に失敗します。 これは、Azure DevOps Server と Visual Studio とは異なり、Git は Windows 証明書ストアを認識しないためです。 代わりに、証明書ストアに OpenSSL を使用します。 SSL で構成されたプロジェクトに Git リポジトリを使用するには、TFS 2013 デプロイの証明書チェーンのルートにある証明書を使用して Git を構成する必要があります。 これは、Git リポジトリ プロジェクトにのみ適用されるクライアント構成タスクです。

Visual Studio 2013 での Git ネットワーク操作のしくみの詳細については、この ブログの投稿を参照してください。

ヒント

Windows 認証などのその他の Git 資格情報管理タスクについては、Git 用の Windows 資格情報ストアダウンロードしてインストールすることを検討

Git の証明書ストアを構成するには

  • そのコンピューターの Administrators グループに属するアカウントを使用して、コンピューターにログオンします。

  • 上記のように、必要な証明書がコンピューターにインストールおよび構成されていることを確認します。

  • サポートされている Web ブラウザーで、Base64 でエンコードされた X.509 CER/PEM ファイルとして Azure DevOps Server ルート証明書を抽出します。

  • Git ルート証明書ストアのプライベート コピーを作成し、そのストアのプライベート ユーザー コピーに追加します。