TeamCity サーバーへの HTTPS アクセスの構成
HTTPS プロトコルは、コンピューターネットワーク上でサーバーとクライアントの安全な通信を行うために暗号化を使用します。TeamCity サーバーがパブリックインターネットアドレスで利用できる場合は、セキュリティを大幅に強化するために HTTPS 接続を構成することを強くお勧めします。
安全な HTTPS アクセスを構成するには、証明書が必要です。手動で取得してロードすることも、TeamCity に暗号化しましょう経由で有効な証明書を自動的に発行させることもできます。
Let's Encrypt から証明書を取得する
暗号化しましょう(英語)は、最新のすべてのブラウザーによって信頼される TLS 証明書を提供する非営利の認証局 (CA) です。TeamCity は、この CA に連絡して、TeamCity サーバードメインと、構成されている場合はアーティファクト分離ドメインの両方の証明書を自動的に発行できます。
Let's Encrypt がドメインの所有権を検証し、証明書を発行する方法については、この記事を参照してください: 使い方(英語)。
技術的な案内
証明書の種類 : シングルまたはマルチドメイン SAN 証明書
証明書の有効期限 : 90 日間
自動更新 : 有効期限の 30 日前
チャレンジタイプ : HTTP-01(英語)
自動フェッチ
管理 | HTTPS 設定に移動し、Let's Encrypt から取得オプションを選択します。Let's Encrypt は、サーバーとアーティファクト分離ドメインを所有していることを確認するために特定のエンドポイントにアクセスする必要があるため、これらのドメインはインターネット経由でアクセスできる必要があります。サーバー URL が「localhost」アドレスを指している場合は、対応するエラーメッセージが表示されます。
対応するリンクをクリックして Let's Encrypt の利用規約を読み、「同意して取得する」をクリックします。

CA があなたの身元を確認すると、有効な証明書が発行され、自動的にインストールされます。

必要なリダイレクトモードを選択します。
TeamCity 設定で、アーティファクト分離 URL とサーバー URL を「http://...」から「https://...」に更新します。TeamCity では、この手順のリマインダーとして「ドメイン分離アーティファクト URL は HTTP を使用します」および「サーバーのルート URL は HTTP を使用します」のヘルスレポートが表示されます。
ポート要件と手動フェッチ
Let's Encrypt は、チャレンジファイルが http://<your_domain>:80/.well-known/acme-challenge にあることを想定しています。これらのファイルを提供するには、TeamCity はポート 80 にアクセスする必要があります。
サーバーが別のポート (たとえば、8111) で実行されている場合、TeamCity はポート 80 でカスタムソケットを開こうとします。このソケットは、チャレンジ検証が終了すると (結果に関係なく) 閉じます。
サーバーがポート 80 で実行されている場合、TeamCity はチャレンジファイルを直接提供しようとします。TeamCity サーバーを停止したり再構成したりする必要はありません。
TeamCity はチャレンジを処理し、サーバーを起動したのと同じユーザーでソケットを開くため、このユーザーがポート 80 にアクセスできません(英語)を持っている場合は両方のアプローチが失敗する可能性があります。
Let's Encrypt がドメインの所有権を確認して証明書を発行できない場合、TeamCity はプロセスを保留し、テキストファイルの内容とパスを表示します。

証明書を発行するには、次のことを試してください。
キャンセルをクリックし、ポート 80 が使用可能であり、現在のユーザーがアクセスできることを確認してから、自動取得を再試行します。
キャンセルをクリックせず、必要なチャレンジファイルを指定された場所に手動で配置します。完了したら、管理 | HTTPS 設定ページに戻り、続行をクリックします。
証明書の自動更新
Let's Encrypt によって発行された証明書の有効期間は 90 日間です。TeamCity は、証明書が自動的に期限切れになる 30 日前に証明書の更新を試みます。teamcity.https.close.expiration.threshold.<units>=value 内部プロパティを使用して、別のしきい値を設定できます。
TeamCity が証明書を再発行できない場合は、対応するメッセージがヘルスレポートに表示されます。TeamCity が自動モードで証明書を更新できない場合は、手動で証明書を更新してください。
証明書を手動で生成してロードする
TeamCity が Let's Encrypt から証明書を要求できないようにする場合は、SSL 証明書と秘密 RSA キーまたは ECC キーを取得して手動でアップロードします。
証明書は
.pemファイルである必要があります。秘密鍵は、
PKCS#1(RSA キーのみ) またはPKCS#8(RSA および ECC キー) 形式で、暗号化されていない必要があります。
証明書の取得方法
公開サーバーの場合は、信頼できる機関 ( 暗号化しましょう(英語)、ZeroSSL(英語) など) から無料の証明書を手動で生成します。例: 証明書ボット(英語)を使用できます。もう 1 つのオプションは、DigiCert(英語) や GoDaddy(英語) などの有償 CA から証明書を購入することです。
非公開サーバーの場合は、既存の証明書を使用することも、ローカルで新しい証明書を生成することもできます。例: 次の指示(英語)に従ってください。自己署名証明書を使用する場合は、クライアントがそれを信頼するように構成されていることを確認してください。
サンプル: 必要なファイルを生成する
次の例は、OpenSSL(英語) ターミナルコマンドを使用して次のファイルを生成する方法を示しています。
PKCS#8 形式のプライベート楕円曲線 (EC) キー
PEM 形式の公開鍵
有効期限が事前に定義された自己署名証明書
ファイルのアップロード
証明書と秘密鍵を取得したら、次のようにします。
管理 | HTTPS 設定に移動します。
アップロードオプションを選択してください。
両方のファイルをアップロードします。
HTTPS 接続用のポートを選択します。デフォルトでは、TeamCity はポート 443 を提案します。ポート番号の変更が必要になる場合があります。
ファイルを適用するをクリックして、TeamCity がサーバー URL にアクセスできるかどうかを確認します。アクセスが拒否された場合、TeamCity はエラーを表示し、無効な設定を無視します。
設定を保存してください。
必要なリダイレクトモードを選択します。
スクリプト経由で証明書をアップロードする
スクリプトを使用して HTTPS 設定の構成を自動化することもできます。スクリプトには次の内容が含まれている必要があります。
例:
ここでの TOKEN は、Change HTTPS settings 権限を持つ個人のトークンです。
コンテナーでの HTTPS のセットアップ
TeamCity サーバーが Linux コンテナー(英語)で実行されている場合は、docker run/podman run コマンドに -p 443:8443 パラメーターを追加します。このパラメーターにより、TeamCity はコンテナー内の非特権ポート 8443 をデフォルトの HTTPS ポート 443 にマッピングできます。その結果、root ユーザーでサーバーを実行しなくても TeamCity にアクセスできるようになります (特権ポート 443 にアクセスするにはこれが必要です)。
HTTPS リダイレクトモード
HTTPS アクセスを正しく構成した後、TeamCity では次のリダイレクトオプションのいずれかを選択できます。

無効 (デフォルト)。すべてのクライアントは HTTP リクエストと HTTPS リクエストの両方を使用できます。これは最も安全性の低いオプションです。
ブラウザーのリクエストのみ。ブラウザー経由で接続するすべてのユーザーは HTTPS を使用する必要があります。エージェントおよびカスタムスクリプトからのリクエストには HTTP を使用できます。
このオプションは、安全で分離されたインフラストラクチャがある場合、または TeamCity サーバーに接続するローカルエージェントのみがある場合に適しています。
また、エージェントを HTTPS 経由で TeamCity に接続するように構成できる移行期間にも役立ちます。
すべてのリクエストに対して有効にします。すべての TeamCity クライアントは HTTPS にリダイレクトされます。
使用可能な暗号化プロトコルの指定
TeamCity がクライアントとの通信に使用するデフォルトのプロトコルは TLS バージョン 1.2 です。
使用可能なプロトコルのリストを設定するか、TeamCity に特定のプロトコルを強制的に使用させるには、teamcity.https.use.protocols 内部プロパティを追加し、一般的な Tomcat 構文を使用して必要な値に設定します。使用可能な値を表示するには、このページの「プロトコル」属性の説明を参照してください: HTTP コネクター(英語)。
このプロパティを変更した後、TeamCity サーバーを再起動して変更を有効にします。

追加情報
HTTPS 設定の場所
HTTPS を誤って構成した場合、ログインできないか、変更をロールバックできないその他の問題が発生する可能性があります。この場合、サーバー / ノードマシンの <TeamCity Data Directory> /config/_https フォルダーにある https-settings.xml 構成ファイルを手動で編集できます。
厳格な輸送セキュリティ
HTTPS アクセスが有効になっている場合、TeamCity は 1 年間有効な厳格な輸送セキュリティ (HSTS) ヘッダーを追加します。その結果、ブラウザーは HTTPS プロトコルの適用を開始し、同じドメインでホストされている HTTP リソースにアクセスできなくなります。
この動作は意図的なものであり、無効にすることはできません。HTTP URL 経由で内部リソースにアクセスする必要がある場合は、これらのリソースをプロキシの背後に移動し、HTTPS アクセスを構成することを検討してください。回避策として、HTTP URL にアクセスする必要がある場合は、ブラウザーで HSTS 設定を手動で削除することもできます。
関連ページ:
プロキシサーバーの構成
この記事では、次のプロキシタイプの構成に関する一般的な推奨事項を示します。TeamCity サーバーの WebUI の前にインストールされたリバースプロキシ、発信 TeamCity サーバー接続用のプロキシ、送信ビルドエージェント接続用のプロキシ、プロキシの背後に TeamCity サーバーをセットアップする:例を考えてみましょう:TeamCity サーバーはローカル URL にインストールされます。パブリック URL として外部から閲覧可能です。クライアントがリソースにアクセスするために使用する実際...
高可用性のためのマルチノードセットアップ
TeamCity サーバーは、高可用性と柔軟な負荷分散のために複数のノード (またはサーバー) を使用するように構成できます。TeamCity ノードのクラスターをセットアップすることが可能です。各ノードは、ビルドからのデータの処理や VCS リポジトリからの変更の収集など、さまざまなタスクを担当します。または、すべての作業を行うメインノードを 1 つと、読み取り専用インターフェースを提供するセカンダリノードを 1 つ保持します。メインノードがダウンした場合、最小限のダウンタイムですべてのデータ...
TeamCity の設定とメンテナンス
サーバー構成を変更するには、管理 | グローバル設定に移動します。次の設定ブロックを使用できます。TeamCity の設定:データベース実行中の TeamCity サーバーによって使用されるデータベース。データディレクトリディレクトリを参照できる \<TeamCity データディレクトリ \> パス。アーティファクトディレクトリ TeamCity サーバーがビルドアーティファクト、ビルドログ、その他のビルドデータを保存するために使用するルートディレクトリのリスト。デフォルトの場所はです...
ユーザープロファイルの構成
ユーザープロファイル設定にアクセスするには、ヘッダーのアバターをクリックし、ドロップダウンメニューからプロファイルを選択します。パスワードを変更する:組み込み認証が設定されている場合、TeamCity サーバーはユーザー認証用のパスワードを保持します。プロファイル | 一般 | 組み込み認証でパスワードを変更できます。既存のパスワードと新しいパスワードを入力し、変更を保存をクリックします。パスワードは、組み込みの認証でのみ変更できます。これらのフィールドが表示されない場合は、TeamCity...
TeamCity データディレクトリ
TeamCity データディレクトリは、TeamCity サーバーが構成、ビルド結果、現在の操作ファイルを保存するために使用するファイルシステム上のディレクトリです。このディレクトリは、すべての構成設定の 1 次ストレージであり、TeamCity のインストールに不可欠なデータを保持します。ビルド履歴、ユーザーとそのデータ、その他のデータはデータベースに保存されます。ディレクトリとデータベースに保存されるデータの説明については、バックアップに関する注意事項を参照してください。このドキュメントや他...