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

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

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

構成を選択する前に、ここで説明する利点と欠点を確認してください。 組織のセキュリティ ニーズに最も合った構成を特定した後、このトピックの手順に従って配置を構成します。

このトピックの内容

HTTP に加えて HTTPS と SSL をサポートする場合の利点

両方のプロトコルをサポートするようにAzure DevOps Serverの展開を構成した場合、SSL を使用して HTTPS 用に構成されているコンピューターを持つユーザーは、そのプロトコルを使用して接続するため、展開の安全性が高くなります。 さらに、HTTP のみをサポートするように構成されているコンピューターのユーザーも配置に接続できます。 この構成は、公衆ネットワーク経由では配置できませんが、管理されたネットワーク環境で HTTP 接続のサポートを継続することにより、次の利点が得られます。

  • スケジュールが許せば、HTTPS と SSL をサポートするようにクライアント コンピューターを構成しておくと、後になって配置のセキュリティを高めることができます。 段階的な方法で実行する場合は、すべてのコンピューターを同時にアップグレードする必要はありません。まだアップグレードされていないコンピューターのユーザーも配置に接続できます。

  • Azure DevOps Serverの構成と保守をより簡単に行うことができます。

  • ある Web サービスから別の Web サービスへの呼び出しは、HTTPS と SSL を経由するよりも HTTP を経由する方が高速で処理されます。 したがって、パフォーマンス要件がセキュリティ リスクよりも重要である場合は、引き続きクライアント コンピューターから HTTP 接続をサポートできます。

すべての接続に HTTPS と SSL を要求する場合の利点

すべての接続に HTTPS と SSL を要求する場合、次の利点が得られます。

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

  • プロジェクトのフェーズの終了予定日に証明書が期限切れとなるように構成することで、アクセスをより簡単に管理できます。

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

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

  • 継続的な管理タスクが複雑になる可能性があります。 たとえば、Service Pack またはその他の更新プログラムを適用できるようにするために、HTTPS と SSL のサポートを停止するように配置を再構成することが必要になる場合があります。

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

  • 多大な時間を費やしてこれらの構成のいずれかを設定およびテストする必要があり、配置のトラブルシューティングがより困難になります。

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

  • HTTPS と SSL を要求する場合は、配置のパフォーマンスが低下します。

HTTPS と SSL をサポートまたは要求するように配置を構成する

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

このトピックの各手順を実行すると、次のタスクを完了できます。

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

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

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

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

  5. Release Management for Visual Studio 2013 を構成する

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

前提条件

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

  • Azure DevOps のデータ層とアプリケーション層の論理コンポーネントはインストールする必要がありますが、Azure DevOps Serverそれ自体の場合、必ずしも構成されているわけではありません。 これらの層には、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 グループに属している必要があります。

  • Release Managementを構成するには、Release Management Server をホストするサーバー上の Administrators グループに属し、Release Managementのリリース マネージャー ロールのメンバーである必要があります。

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

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

前提条件

このトピックの手順では、次のいずれかの状況に当てはまることを前提としています。

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

  • PKI を構成して管理する方法と、証明書の要求、発行、および割り当てに詳しいこと。

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

証明書の取得

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

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

証明書の要求、インストール、および証明書のある Web サイトの構成

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

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

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

¹ ここではクライアントとサーバーが別々に登場しますが、本書の慣例に過ぎません。 配置エージェントを実行しているすべてのコンピューターに証明書をインストールする必要があります。

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

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

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

    要求を作成し、記入します

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

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

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

    • 既定の Web サイト
    • Azure DevOps Server
    • プロキシのAzure DevOps Server (デプロイで使用する場合)

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

  5. [ComputerName] を展開し、[サイト] を展開し、構成する Web サイトのサブメニュー (たとえば、Azure DevOps Server) を開き、[操作] ウィンドウから [バインド] を選択します。

    すべてのサイトに対してバインディングを構成する必要があります。

  6. [ サイト バインド] で、[ 追加] を選択します。

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

  7. [ 種類 ] ボックスの一覧 で [https] を選択します。

    [ ポート] に、別のポート番号を入力します。

    重要

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

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

    一意のポート番号を選択したことを確認します

  8. 構成している Web サイトの [ホーム ] ページで、[ 機能 ] ビューを開きます。

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

  10. 構成する認証方法を選択し、サブメニューを開き、セキュリティ ニーズに合わせて認証方法を有効または無効にするか、追加の構成を行います。 たとえば、匿名認証を無効にする場合は、匿名認証方法を選択し、操作メニューの [無効化] をクリックします。

    メソッドを選択した後、実行アクションを選択

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

ファイアウォールの構成

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

重要

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

SQL Server Reporting Services の構成

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

ヒント

配置でレポート機能を使用しない場合は、この手順を省略できます。

Azure DevOps Server用の HTTPS の構成

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

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

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

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

    [ URL の変更] ウィンドウが開きます。

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

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

    アドレスで、HTTPS、サーバー、およびポートを指定

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

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

    localhost ではなく、サーバーの完全修飾ドメイン名を使用してください。

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

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

  8. [レポート] で、[編集] を選択します。

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

    [ レポート] ウィンドウが開きます。

  9. [ レポート ] タブを選択します。[ レポート サーバーの URL] にWeb サービスレポート マネージャーの HTTPS URL を入力し、[OK] を選択します

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

変更内容が予想どおりに機能するかどうかをテストしてください。 この手順は省略できますが、実行することを強くお勧めします。

配置へのアクセスをテストするには

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

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

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

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

SSL で HTTPS を使用するには、Azure DevOps Server アプリケーション層へのすべての接続を要求できます。 この追加のセキュリティは省略できますが、実行することをお勧めします。

SSL 接続を要求するには

  1. 構成する Web サイトをホストするサーバーで、[ スタート] を選択し、[ 管理ツール] を選択して、[ インターネット インフォメーション サービス (IIS) マネージャー] を選択します。

  2. ご使用の IIS のバージョンに適した手順に従ってください。

    IIS 7.0 を使用する配置の場合:

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

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

    3. [SSL 設定] ウィンドウで、[SSL チェックが必要] ボックスを選択します。

      (省略可能)[128 ビット SSL チェックが必要] ボックスを選択します。

    4. [ クライアント証明書] で、展開のセキュリティ要件に応じて、[ 無視]、[ 承諾]、または [必須] を選択します。

    5. [ アクション] で、[ 適用] を選択します。

    6. SSL を要求する各 Web サイトに対して、これらの手順を繰り返します。

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

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

注意

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

ビルド構成の更新

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

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

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

  2. [Team Foundation] で、サーバーの名前を展開し、[ビルド構成] を選択します。

    [ ビルド構成] ウィンドウが表示されます。

  3. サービス構成で、[ 停止] を選択し、[プロパティ] を選択 します

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

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

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

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

  6. [ エンドポイントの詳細] で、ポート番号が構成の詳細と一致することを確認します。

  7. [ プロトコル] で、[ HTTPS] を選択します。

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

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

  9. [ サービスのプロパティのビルド ] ダイアログ ボックスで、[開始] を選択 します

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

ユーザーが 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. [ スタート] を選択し、[ 実行] を選択し、「 devenv /resetuserdata」と入力して、[ OK] を選択します

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

    注意

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

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

Git の構成

既定では、バージョン管理に Git を使用するプロジェクトでは、Azure DevOps Server用に構成した SSL 証明書の検証に失敗します。 これは、Azure DevOps Serverや Visual Studio とは異なり、Git は Windows 証明書ストアを認識しないためです。 代わりに、Git は証明書ストアに 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 のルート証明書ストアのプライベート コピーを作成し、それをストアのプライベート ユーザー コピーに追加します。