TLS 証明書の可視性

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む16読むのに数分
  • 証明書インベントリと管理 アプリケーションを使用すると、ディスカバリー は既存の CI ベースの Discovery スケジュールを使用して、特定のポートで証明書を自動的にスキャンできるようになります。さらに、個々の URL をスキャンするための Discovery スケジュールを作成できます。

    ServiceNow Store では、ServiceNow で作成されたアプリケーションに対して、新しいアプリケーションや更新が定期的にリリースされます。すでにアプリケーションをお持ちの場合は、最新バージョンをダウンロードし、当社の製品を使った既存の操作性を改善することができます。アプリケーションがストア内でリリースされるたびに各種機能が使用可能になったり拡張されたりするため、各リリースで利用可能になるコンテンツや機能はこのドキュメントではバージョン番号で示されます。

    証明書インベントリと管理 バージョン 1.1.7 では、インポートされた証明書のリストを追加し、GoDaddy や DigiCert などの認証局 (CA) からの証明書をスキャンできます。バージョン 1.2.0 以降では、Sectigo と Entrust の CA もスキャンできます。

    証明書インベントリと管理 バージョン 1.3.8 では、アプリケーションは DigiCert の既存の認証局パターンを拡張し、CA 信頼証明書検出の一部として次のフィールドを収集します。これらのフィールドはすべて、証明書の拡張機能 [sn_disco_certmgmt_certificate_extension] テーブルに保存されます。
    • 証明書 ID
    • 注文 ID
    • サムプリント
    • シリアル番号
    • 証明書ステータス

    1500 を超える証明書について、証明書または検出 CA 信頼をインポートするには、1 つ以上のサーバーレスパターンが構成された検出スケジュールを作成します。各パターン実行では、最大 1500 の証明書検出がサポートされています。

    実行パターン

    すべての証明書を検出するには、制限 (デフォルトは 1500) および start_offset (デフォルトは 0) を適切に設定する必要があります。たとえば、最大 6000 の証明書をフェッチするには、4 つのサーバーレスパターンを 0、1500、3000、4500 の start_offset で追加します。start_offset と制限パラメーターは、以下に示すように設定されます。

    パターン構成

    ポートスキャンによる証明書検出の実行

    TLS ポートプローブ [tls_ssl_certs] が有効になっている場合、ディスカバリー は既存の CI ディスカバリー スケジュールで 14 個の事前承認済みポートを自動的にスキャンします。

    始める前に

    必要なロール:admin または discovery_admin

    手順

    1. TLS ポートプローブ [tls_ssl_certs] を有効にします。
      1. 移動先 ディスカバリー定義 > ポートプローブ.
      2. [tls_ssl_certs] を開きます。
      3. [アクティブ] チェックボックスをクリックしてプローブを有効にしてから、変更を保存します。
        新規インストールの場合、このボックスはデフォルトでオフになります。
    2. TLS ポートプローブを構成しやすいように、IP サービスを追加します。
      1. 移動先 ディスカバリー定義 > IP サービス.
      2. ポートを使用して新しい IP サービスを作成します。
    3. TLS ポートプローブを構成します。
      ポートプローブ定義を編集することで、最大 138 個のポートを追加したり、既存のポートを削除したりすることができます。
      1. 移動先 ディスカバリー定義 > ポートプローブ.
      2. [tls_ssl_certs] を開きます。
      3. [トリガーとなるサービス] の横にあるロックアイコンをクリックして、このフィールドのロックを解除します。
      4. リストのポートを削除するか、検索エリアからさらに追加して、変更を保存します。

    タスクの結果

    既存の ディスカバリー スケジュールは、指定されたポートに証明書がないか自動的にスキャンします。証明書管理ダッシュボードで結果を監視できます。

    個別の URL スキャンによる証明書検出の実行

    URL スキャンから証明書を検出するには、個々の URL を手動で追加してから、新しい証明書 ディスカバリー スケジュールをセットアップする必要があります。

    始める前に

    必要なロール:admin または discovery_admin
    注:
    URL スキャン中にサーバーで利用可能な証明書のみを検出できます。利用可能な証明書を確認するには、openssl s_client -showcerts -connect <URL>:<PORT> </dev/null コマンドを使用します。

    手順

    1. 移動先 すべて > 証明書管理 > 証明書検出ソース URL.
    2. [新規] をクリックして、個々の URL をテーブルに追加します。
      正確な結果が得られるように、次の形式で URL を入力してください。ポートはオプションであり、scheme://host:port でポートが指定されていない場合はデフォルトが使用されます。

      例:https://www.servicenow.com または https://servicenow.com:443、ldaps://myldap.com または ldaps://myldap.com:636

    3. 次のフィールドを使用して ディスカバリー スケジュールを作成します。
      ディスカバリースケジュールのセットアップの詳細については、「水平検出のスケジュール」を参照してください。
      1. [Discovery][証明書] を選択します。
      2. [証明書検出タイプ][URL 証明書検出] を選択します。
      3. 変更することが推奨されていない限り、バッチサイズはそのままにしておきます。
    4. [証明書 URL] タブで、[編集] をクリックして他の URL を追加または削除し、[送信] をクリックします。
    5. HTTP(s) エンドポイント [cmdb_ci_endpoint_http] テーブルからの URL を検出に含めるには、チェックボックスをクリックします。

    タスクの結果

    ディスカバリー のスケジュールを実行すると、指定された URL にあるすべての証明書を自動的にスキャンして cmdb_ci_endpoint_http テーブルにあるすべての URL をフェッチします。次に、sn_disco_certmgmt_cert_url_sched_m2m で URL とスケジュール間のマッピングを作成します。

    サービスマッピング を有効にすると、cmdb_ci_endpoint_http にエントリを作成するときに、デフォルトで HTTP エンドポイントとアプリケーション間に関係を作成します。たとえば、Amazon アプリケーションは amazon.com に自動接続されます。

    関係は次のとおりです: cmdb_ci_endpoint_http[親] --> [Implement End Point To::Implement End Point From] --> cmdb_ci_appl[子]

    上記の関係が存在する場合は、URL 証明書検出により証明書とアプリケーション間に追加の関係が作成されます。この関係性は次のとおりです: cmdb_ci_appl[親] --> [Uses::Used by] --> cmdb_ci_certificate[子]

    注:
    URL 検出スケジュールはサーバー CI を作成しません。

    一括証明書アップロードの使用

    証明書インベントリと管理 のバージョン 1.2.0 以降では、SSL 証明書を一括インポートして時間とリソースを節約できます。最大 5000 の証明書を、1 つの .xlsx ファイルでアップロードできます。

    始める前に

    必要なロール:デフォルトの管理者は pki_user と pki_admin の両方です。次のロールを持つユーザーは、証明書の一括アップロードにアクセスできるようになります。
    • sn_disco_certmgmt.pki_user
    • sn_disco_certmgmt.pki_admin

    手順

    1. 移動先 すべて > 証明書管理 > 証明書を一括アップロード.
    2. [一括アップロード] ページで、[テンプレートファイルのダウンロード (.xlsx)] リンクをクリックして sample_cmdb_ci_certificate.xlsx ファイルをダウンロードします。
    3. ダウンロードした sample_cmdb_ci_certificate.xlsx を開きます。
    4. 列の値をサンプルとして使用して、SSL 証明書のプロパティを適切な列に追加します。
      Excel シートの各行は CI 証明書です。次の必要な列を入力する必要があります。
      • root_issuer
      • issuer
      • subject_common_name
      • issuer_common_name
      • fingerprint
      • issuer_distinguished_name
      • subject_distinguished_name
      • fingerprint_algorithm
      • valid_to:valid_from 未満にはできません。ミリ秒単位。たとえば、1586789478000 は 2020 年 4 月 13 日 14 時 51 分 18 秒を表します。
      • valid_from:ミリ秒単位。たとえば、1586789478000 は 2020 年 4 月 13 日 14 時 51 分 18 秒を表します。
      • signature_algorithm
      • key_size
      • state:発行済み、インストール済み、失効済み、廃止、その他
      注:
      証明書のチェーン関係を維持するには、すべての証明書に root_issuer 列にルート証明書の指紋と issuer 列にその発行者の指紋が含まれている必要があります。自己署名証明書の場合は、root_issuerissuer は証明書の指紋の値が含まれている必要があります。
    5. .xlsx ファイルを保存します。
    6. [証明書管理] > [証明書の一括アップロード] の順に移動します。
    7. [ファイルを参照] をクリックして、完了した .xlsx ファイルを選択します。
    8. [アップロード] をクリックします。

    タスクの結果

    注:

    アップロード中にエラーが発生した場合は、警告メッセージとエラーログへのリンクが表示されます。admin ロールのユーザーのみが、これらのログを表示できます。必須フィールドが空の場合や、valid_from エポック値が valid_to よりも大きい場合は、エラーが発生する可能性があります。

    ファイルが正常にアップロードされた後、View All リダイレクトリンクを含む成功メッセージが表示されます。一意の証明書 [cmdb_ci_certificate] テーブルに追加された証明書のリストを表示できます。

    証明書ファイルのインポートによる証明書検出の実行

    証明書インベントリと管理 バージョン 1.1.7 では、パターンベースの Discovery を使用してファイルをシステムにインポートすることで、証明書ファイルから証明書を検出できます。TLS_keepOriginalCertificate が False に設定されていることを確認してください。

    始める前に

    必要なロール:admin または discovery_admin
    注:
    証明書は次のいずれかの形式である必要があります。
    • cert
    • .pem
    • .txt
    • .der

    このタスクについて

    インポート証明書は、以下を使用するパターンインポート SSL 証明書を使用して検出されます。
    • サーバー:証明書がホストされているホスト名または IP アドレス。証明書が MID サーバー からインポートされている場合は、サーバー入力パラメーターとして localhost を指定し、「temp_certificate_folder」を空のままにすることができます。
    • server_certificate_folder:証明書が存在するサーバー上のフォルダーパス。
    • TLS_keepOriginalCertificate パラメーター:TLS_keepOriginalCertificate パラメーターが true に設定されている場合、ペイロードサイズが増加するためにメモリー不足の問題が発生する可能性があります。これは false に設定する必要があります。
    • temp_certificate_folder:ファイルが一時的にコピーされる MID サーバー 上のフォルダ。

    手順

    1. 次のフィールドを使用して ディスカバリー スケジュールを作成します。
      ディスカバリースケジュールのセットアップの詳細については、「水平検出のスケジュール」を参照してください。
      1. [Discovery] で [証明書をインポート (Import Certificates)] を選択します。
      2. [証明書検出タイプ] で [証明書をインポート (Import Certificates)] を選択します。
      3. [MID Server の選択方法] で [特定の MID Server ] を選択します。
      4. [MID Server ] を選択し、目的の MID Server を選択します。
      5. 証明書が存在する Windows または Linux ホストマシンの資格情報を追加します。
      6. 必要なフィールドに入力し、[保存] します。
    2. [サーバーなし実行パターン] タブで、[新規] をクリックして [Import SSL Certificate (SSL 証明書をインポート)] パターンを追加し、[送信] をクリックします。

    タスクの結果

    ディスカバリー のスケジュールを実行すると、ファイルが自動的にスキャンされます。証明書管理ダッシュボードで結果を監視できます。

    証明書のインポートによる証明書チェーン関係性の維持

    証明書チェーンの関係性の維持には業界標準の .txt 拡張子が使用されます。証明書チェーンの関係性は他のファイル拡張子では維持されません。.txt 証明書チェーンファイルにある証明書の想定される順序は、サーバー証明書、中間証明書、およびルート証明書 です。

    ユースケース:
    • 2 つ以上の証明書が .cert や .pem などの形式で見つかった場合は、最初の証明書のみが考慮されます。他の証明書は処理されないため、証明書チェーンの関係は維持されません。
    • 1 つの証明書のみを含む .txt 拡張子がある場合はサーバー証明書と見なされ、証明書の関係性は維持されません。
    • 2 つの証明書を含む .txt 拡張子がある場合、最初の証明書はサーバー証明書と見なされ、2 つ目の証明書は中間証明書ではなくルート証明書と見なされます。
    注:
    証明書チェーンの関係性は前回の URL/IP 検出の実行に基づいて更新されます。たとえば、証明書チェーン関係のないファイルインポートによって、同じ証明書 (フィンガープリント) の既存のチェーン関係性が中断されます。

    証明書管理資格情報タイプの資格情報識別子を設定する

    GoDaddy、DigiCert、Sectigo を含む CA タイプから TLS 証明書を検出するための外部ストレージ資格情報がサポートされています。このサポートを使用するには、資格情報識別子を特定の証明書管理資格情報タイプのインスタンスで設定する必要があります。

    始める前に

    必要なロール:管理者

    手順

    1. 移動先 すべて > ディスカバリー > 資格情報.
    2. [新規] をクリックします。
    3. 資格情報のタイプを [証明書管理資格情報] として選択します。
    4. [資格情報] フォームで、[外部の資格情報ストア] チェックボックスをオンにします。
    5. [資格情報エイリアス] と [資格情報 ID] フィールドに入力します。
      資格情報リゾルバーファイルの資格 ID と Arg_ID は、同じである必要があります。
    6. [送信] をクリックします。

    認証局クエリーによる証明書検出の実行

    証明書インベントリと管理 では、プロビジョニング済み TLS 証明書を認証局 (CA) から検出できます。さまざまな認証局ベンダーのパターンを利用できます。

    始める前に

    必要なロール:pki_admin または discovery_admin

    検出中、CA パターンでは次の API 要素を使用します。インスタンス内の資格情報に追加されたユーザーには、以下のクエリを送信する権限が必要です。

    CA API 要素
    GoDaddy
    • * /v1/certificates
    • * /v1/certificates/{certificate_id}/download
    DigiCert
    • * /services/v2/order/certificate
    • * /services/v2/certificate/{certificate_id}/chain
    Entrust
    • * / v2/certificates
    • * / v2/certificates/{certificate_id}
    Sectigo
    • * /cert-manager/api/ssl/v1
    • * /cert-manager/api/ssl/v1/collect/{certificate_id}/pem
    証明書インベントリと管理 バージョン 1.1.7 で利用可能なパターンは次のとおりです。
    • GoDaddy
    • DigitCert
    証明書インベントリと管理 バージョン 1.2.0 で利用可能なパターンは次のとおりです。
    • Entrust
    • Sectigo

    手順

    1. 必要に応じて、資格情報エイリアスを作成します。
      Discovery の資格情報エイリアス」を参照してください。
      新しい資格情報の新しい資格情報エイリアスを作成します。複数の資格情報に同じ資格情報エイリアスがある場合、ディスカバリー 実行中にまず資格情報が取得され、その後で ディスカバリー が開始されます。
    2. CA の新しい資格情報タイプを作成します。
      1. 移動先 ディスカバリー > 資格情報 をクリックしてから、「 新規」をクリックします。
      2. [証明書管理資格情報] を選択します。
      3. ロックアイコンをクリックして、[資格情報エイリアスリスト (Credential alias list)] をロック解除します。
        その後、エイリアスが資格情報にマッピングされます。
      4. [タイプを指定 (Specify Type)] で [資格情報] を選択します。
      5. [CA タイプ] を選択します。
        使用可能なタイプは、GoDaddy、Digicert、Entrust、または Sectigo です。
      6. 選択した CA タイプに固有のフィールドに入力します。

        各 CA には、異なるフォームフィールドがあります。詳細については、「API キー資格情報」を参照してください。以下の各 CA フォームの例を参照してください。

        図 : 1. GoDaddy フォーム
        godaddy
        図 : 2. DigiCert フォーム
        digicert
        図 : 3. Entrust フォーム
        entrust
        図 : 4. Sectigo フォーム
        sectigo
    3. 次のフィールドを使用して ディスカバリー スケジュールを作成します。
      ディスカバリースケジュールのセットアップの詳細については、「水平検出のスケジュール」を参照してください。
      1. [Discovery][証明書] を選択します。
      2. [証明書検出タイプ] で [CA 信頼検出 (CA Trust Discovery)] を選択します。
      3. [MID Server の選択方法] で [自動選択] または [特定の MID Server ] を選択します。
      4. その他に必要なフィールドがあれば入力し、[保存] します。
    4. [サーバーなし実行パターン] タブで、[新規] をクリックして Entrust パターンなどの必要な CA パターンを追加し、[送信] をクリックします。
      [証明書のステータスを含める (Include cert status)] をオンにすると、複数の証明書のステータスをカンマで区切って追加できます。

    タスクの結果

    ディスカバリー のスケジュールを実行すると、ファイルが自動でスキャンされます。証明書管理ダッシュボードで結果を監視できます。

    証明書インベントリと管理 のカスタマイズ

    Discovery プロパティを使用すると、証明書インベントリと管理 のいくつかの面をカスタマイズできます。

    始める前に

    必要なロール:admin または discovery_admin

    手順

    移動先 すべて > ディスカバリー定義 > プロパティ これらの Discovery プロパティを編集するには、以下を実行します。
    • glide.discovery.certs.cert_admin_user_id
    • glide.discovery.certs.days_before_expiration_to_create_renewal_task
    • glide.discovery.certs.enable_incident_creation_for_expired_certificates
    • glide.discovery.certs.enable_renewal_task_creation_for_discovered_certificates
    • glide.discovery.certs.slack_channel_id
    証明書検出の参照情報のリンク証明書検出の参照情報