Microsoft Windows 用にヘッドレスブラウザーをセットアップするための証明書の生成

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • TLS/SSL 証明書を生成して Docker REST API を保護し、HTTP 要求を認証します。

    始める前に

    必要なロール:自分の ServiceNow インスタンスの admin、およびホストマシンのローカル管理者。
    警告:
    ホストとして ServiceNow でサポートされている Microsoft Windows のバージョンは、Windows Server 2019 v10.0.17763.737 のみです。他のバージョンはサポートされていません。これらの要件を満たすことができない場合は、Linux ホストをお勧めします。
    次の要件に注意してください。
    • 双方向通信
      警告:
      信頼できる認証局から認証局キーを取得してください。
      • インスタンス URL とサーバーの間で双方向通信が行われる必要があります。
      • サーバーの IP アドレスを検索し、ホスト名を取得します。そのいずれかまたは両方を使用できますが、少なくとも 1 つは必要です。
        注:
        ホスト名がなく、IP アドレスを介して接続している場合は、IP アドレスを入力して、Hostname 環境変数に「localhost」と入力します。
      ヒント:
      これらを覚えやすくするには、次の環境変数を設定します。
      • export PASSWORD="<証明書を生成するためのパスワード>"
      • export SERVERIP="<このサーバーの IP アドレス>"
      • export HOSTNAME="<このサーバーのホスト名>"
    • ポート:この手順では、ポート 2376 または自分のデフォルトポートを使用します。
      注:
      このポートのファイアウォールルールで、受信要求が許可されていることを確認してください。
    • 詳細については、「TLS (HTTPS) を使用して Docker デーモンソケットを保護する (Use TLS (HTTPS) to protect the Docker daemon socket)」を参照してください。

    このタスクについて

    デフォルトでは、Docker API を公開すると要求が認証されないため、ホストマシンが攻撃に対して脆弱になる可能性があります。ただし、Docker API は、HTTPS 暗号化で提供される公開鍵と秘密鍵に対して要求が検証される TLS 認証をサポートしています。この手順では、サーバーとクライアントに対して鍵を作成します。

    手順

    1. コマンドラインを開きます。
    2. 自己署名認証局のキーを生成するか、信頼できる認証局からキーペアを取得します。
      次のコマンドは一例です。構成によって異なる場合があることに注意してください。
      openssl genrsa -aes256 -passout pass:%PASSWORD% -out ca-key.pem 4096
      openssl req -passin pass:%PASSWORD% -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem 
    3. 認証局キーを使用してサーバーのキーペアを生成します。
      次のコマンドは一例です。構成によって異なる場合があることに注意してください。
      openssl genrsa -out server-key.pem 4096
      openssl req -subj /CN=%HOSTNAME% -new -key server-key.pem -out server.csr
      echo extendedKeyUsage = clientAuth > extfile.cnf
      openssl x509 -passin pass:%PASSWORD% -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
    4. 認証局キーを使用してクライアントのキーペアを作成します。
      次のコマンドは一例です。構成によって異なる場合があることに注意してください。
      openssl genrsa -out client-key.pem 4096
      openssl req -subj /CN=%HOSTNAME% -new -key client-key.pem -out client.csr
      echo subjectAltName = DNS:%HOSTNAME%,IP:%SERVERIP%,IP:127.0.0.1 > extfile.cnf
      openssl x509 -passin pass:%PASSWORD% -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -extfile extfile.cnf
    5. CA 公開鍵とクライアントのキーペアを Java キーストアにインポートします。
      この手順は一例であり、構成によって異なる場合があります。

      キーストアファイルを作成し、そのパスワードを作成します (後で使用するために保存します):keytool -genkey -keyalg RSA -alias dse -keystore my.keystore

      キーストアファイルからデフォルトのエントリを削除します:keytool -delete -alias dse -keystore my.keystore

      注:
      このエントリは自動生成されるため、必要ありません。

      CA 公開鍵をキーストアにインポートします:keytool -import -keystore my.keystore -trustcacerts -alias ca -file ca.pem

      クライアントのキーペアをインポートします。
      注:
      新しい pkcs12 キーストアファイルを作成し、そのファイルにキーペアをインポートします。次に、その内容を元のキーストアファイルにコピーします。
      • openssl pkcs12 -export -name clientkeypair -in client-cert.pem -inkey client-key.pem -out clientkeypair.p12
      • keytool -importkeystore -destkeystore my.keystore -srckeystore clientkeypair.p12 -srcstoretype pkcs12 -alias clientkeypair

      これで、すべての証明書をキーストアファイルに追加したので、後で ServiceNow インスタンスにアップロードするためにファイル my.keystore を保存します。また、キーストアファイルの作成を要求されたときに入力したパスワードを覚えておいてください。ServiceNow インスタンスのフォームに、そのパスワードを入力する必要があります。