Cato TLSインスペクションでCLIツールと開発フレームワークを設定する方法

概要

この記事では、コマンドラインツールと開発フレームワークがカトネットワークのTLSインスペクション証明書を信頼し、トラフィックを検査しながらHTTPSがエラーなく機能するようにする方法を示しています。 カト証明書をシステム全体にインストールし、OS信頼ストアを使用していない特定のツールに証明書を指す方法について説明します。

以下の例では、/path/to/CatoNetworksTrustedRootCA.pemをあなたの環境に適した実際のパスに置き換えてください。

証明書をシステム全体にインストールする(推奨)

ホストOSにカトのルートCAをインストールすると、ほとんどのアプリが検査されたトラフィックを自動的に信頼します。 カト証明書のインストール方法に記載されているように、カトのルートCAをインストールできます。

予期した通り動作しない場合は、OSの信頼ストアにカトのルートCAを手動で追加できます。 カト証明書のインストールに関する詳細情報は関連する記事を参照してください。

信頼バンドルを上書きするツール用の合成証明書バンドル

一部のツールは、CA信頼バンドルを拡張するのではなく上書きし、以前に存在していたすべての証明書を実際に削除します。 これらのツールが公共のウェブサイトとカト検査済みトラフィックの両方を信頼するようにするには、OSの信頼されたルート証明書とカトルートCAを含めた合成バンドルを作成してください。

推奨: カトルートCAをシステムストアにインストールしてください。 単一のCAファイルが必要なツールには、合成バンドルを使用してください。

メンテナンスのヒント: 合成バンドルを定期的に新しく作り直してください(例えば、毎月またはOS信頼の更新後)。

Windows (PowerShell)

# Run in elevated PowerShell
$dest="$env:ProgramData\CatoNetworks\TLS\cato_combined_ca.pem"; $destDir=Split-Path $dest; New-Item -ItemType Directory -Force -Path $destDir | Out-Null; Get-ChildItem Cert:\CurrentUser\Root, Cert:\LocalMachine\Root, Cert:\CurrentUser\CA, Cert:\LocalMachine\CA | Sort-Object Thumbprint -Unique | ForEach-Object { "-----BEGIN CERTIFICATE-----"; [System.Convert]::ToBase64String($_.RawData,'InsertLineBreaks'); "-----END CERTIFICATE-----"; "" } | Out-File -Encoding ascii $dest; Write-Host "Combined bundle written to: $dest" 

出力パス: C:\ProgramData\CatoNetworks\TLS\cato_combined_ca.pem

macOS

sudo mkdir -p "/Library/Application Support/CatoNetworks/TLS"

security find-certificate -a -p \
  /System/Library/Keychains/SystemRootCertificates.keychain \
  /Library/Keychains/System.keychain \
  > /tmp/cato_combined_ca.pem && \
  sudo install -m 0644 /tmp/cato_combined_ca.pem \
  "/Library/Application Support/CatoNetworks/TLS/cato_combined_ca.pem"

出力パス: /Library/Application Support/CatoNetworks/TLS/cato_combined_ca.pem

Linux

単一のファイルを生成するために、OSバンドルとカトCAを結合します。

Debian/Ubuntu: 

sudo bash -c 'cat /etc/ssl/certs/ca-certificates.crt > /etc/ssl/certs/cato_combined_ca.pem'

出力パス: /etc/ssl/certs/cato_combined_ca.pem

RHEL/CentOS/Alma/Rocky: 

sudo bash -c 'cat /etc/pki/tls/certs/ca-bundle.crt > /etc/pki/tls/certs/cato_combined_ca.pem'

出力パス: /etc/pki/tls/certs/cato_combined_ca.pem

特定のツールの設定

一部のツールはOS信頼ストアを無視したり、それが利用できない環境で動作します。 その場合は、カトCAまたは合成バンドルを使用するように明示的に設定してください。

一般的な変数設定の構文

Linux/macOS: 

export VARIABLE_NAME=/path/to/file

または恒久的な解決策として:

echo 'export VARIABLE_NAME=/path/to/file' >> ~/.zshrc or ~/.bashrc 
source ~/.zshrc  or  ~/.bashrc

Windows CMD 

set VARIABLE_NAME=C:\path\to\file

または恒久的な解決策として:

setx VARIABLE_NAME "C:\path\to\file"を実行し、その後CMDウィンドウを再度開いてください。

Windows PowerShell 

$env:VARIABLE_NAME="C:\path\to\file"
  • 現在のユーザーのための恒久的な解決策として:

    setx VARIABLE_NAME "C:\path\to\file"を実行し、その後CMDウィンドウを再度開いてください。

  • デバイス上のすべてのユーザーに対する恒久的な解決策として:

    [System.Environment]::SetEnvironmentVariable("VARIABLE_NAME", "C:\path\to\file", "Machine")を実行してください。

Python (Requests、AWS CLI、Azure CLI、Gcloud CLI)

Pythonツールは、certifiを使用することが多く、これにはOS信頼ストアとは別にCAバンドルが含まれます。

推奨される一般的なPython修正

  • macOSまたはLinuxでは、合成証明書バンドルに設定します。
  • Windowsでは、Pythonに直接Windows信頼ストアを使用させるためにpip install pip-system-certsを実行します。 

ツール特有のPython修正

macOS/Linuxの場合、CatoのルートCAをツールのcertifiバンドルに追加するか、そのCA変数を合成バンドルに指すように設定します。

Azure CLI (macOS/Linux) 

CLIに同梱されているcertifiバンドルにCatoのルートCAを追加します。 Cerifiのバンドルの場所を確認するには、以下のコマンドを実行します。

$(az --version 2>&1 | awk -F"'" '/Python location/ {print $2}') -m certifi

AWS CLI / Boto (MacOS/Linux) 

変数を設定します。

AWS_CA_BUNDLE=/path/to/cato_combined_ca.pem

または設定ファイル~/.aws/configにこの行を追加します。

ca_bundle = /path/to/cato_combined_ca.pem

Gcloud CLI 

SDKに同梱されたcertifiバンドルにCatoのルートCAを追加します。

~/google-cloud-sdk/platform/bundledpython*/lib/python*/site-packages/certifi/cacert.pem

注意: 工具をインストールした方法によって、パスは異なることがあります。 これらの場所にcertifi/cacert.pemが見つからない場合は、ツールのディレクトリ内を検索してください。

OpenSSL (Curl、Composer、Ruby/Fastlane)

Curl、Composer、Ruby/Fastlaneなどの多くのツールは、TLSにOpenSSLを利用しています。 デフォルトでは、OpenSSLはLinux上でシステムCAバンドルを読みますが、macOS(Homebrew OpenSSL)およびWindowsでは、OS信頼ストアの代わりに独自のCAファイルを使用します。

推奨される一般的なOpenSSL修正

合成バンドルSSL_CERT_FILE変数を設定してください。

ツール特有のOpenSSL修正

必要に応じて、OpenSSLベースの各ツールを合成バンドルに指すように設定するか、OpenSSL証明書ディレクトリにカトルートCAを追加し、c_rehashを実行します。

Curl 

macOS(SecureTransport)、Windows(Schannel)、およびほとんどのLinuxビルド(OpenSSL/LibreSSL)の組み込みcurlで、追加の設定は不要です。 これらのビルドはすでにOSの信頼ストアを使用しています。

curlが使用しているTLSライブラリを確認するには、次を実行してください: curl --version

OSストアを使用しないOpenSSL/LibreSSLビルドでは、CURL_CA_BUNDLE変数を合成バンドルファイルに指すように明示的に設定します(上記の構文を使用)。 

Composer (PHP)

合成バンドルを使用するようにComposerを設定します。composer config -g cafile /path/to/cato_combined_ca.pem

Ruby、Bundler、Fastlane

合成バンドルを信頼するようにRuby/Fastlaneを設定します。bundle config --global ssl_ca_cert /path/to/cato_combined_ca.pem

Node.jsとnpm

Node.jsとnpmは、OSに応じて証明書ストアを異なる方法で処理します。

  • Windows - Node.jsはシステムストアを使用することが多いため、カトルートCAをシステム全体にインストールするだけで通常は十分です。
  • Linux/macOS - Node.jsは通常、独自のCAバンドルを使用しますが、それにはCato Root CAが含まれていません。

Node.js

TLSエラーが発生した場合は、Cato Root CAを信頼するようにNode.jsを設定します。

  • NODE_EXTRA_CA_CERTS 変数を設定して、Cato Root CAファイルを指すようにします(結合バンドルではなく)。

    export NODE_EXTRA_CA_CERTS=/path/to/CatoNetworksTrustedRootCA.pem

この変数は、Node.jsに組み込みのCAに加えて追加のCAを信頼させます。

npm

npmは単一のCAファイルではなく、結合バンドルを必要とします。 次のようにnpmを設定します。

npm config set cafile "/path/to/cato_combined_ca.pem"

これにより、npmはCato Root CAと公開ルートCAの両方を信頼します。

Java (Maven, Gradle, JDBC, etc...)

Javaはcacertsという信頼ストアファイルを使用します。 TLSインスペクションを可能にするためには、このストアにCato Root CAをインポートします。

cacertsのデフォルトのパスワードはchangeitです。

Linux/macOS

sudo keytool -importcert -noprompt \
  -alias cato-root-ca \
  -file /path/to/CatoNetworksTrustedRootCA.pem \
  -keystore $JAVA_HOME/lib/security/cacerts \
  -storepass changeit

Windows (PowerShell)

keytool -importcert -noprompt `
  -alias cato-root-ca `
  -file "C:\path\to\CatoNetworksTrustedRootCA.pem" `
  -keystore "C:\Program Files\Java\jdk-17\lib\security\cacerts" `
  -storepass changeit

一度cacertsストアに追加されると、Javaベースのツール(例えば、Maven、Gradle、JDBCドライバー、Salesforce Apex Data Loader)はCato CAを信頼します。

Docker

Dockerはホスト上のエンジン/デーモンと任意のイメージ/コンテナの2つの部分で構成されます。

  • Docker エンジンはホストOSの信頼ストアを使用するため、Cato Root CAをシステム全体にインストールすることが十分です。
  • イメージの場合、コンテナ内にCato Root CAをインポートする必要があります。

Debian/Ubuntuベースのイメージ:

COPY CatoNetworksTrustedRootCA.pem /usr/local/share/ca-certificates/cato-root-ca.crt
RUN update-ca-certificates

RHEL/CentOSベースのイメージ:

COPY CatoNetworksTrustedRootCA.pem /etc/pki/ca-trust/source/anchors/
RUN update-ca-trust

これにより、コンテナ内のアプリケーションがCatoインスペクションされたTLSトラフィックを信頼できるようになります。

Go

Goは独自のTLS実装を持っていますが、デフォルトではOSの信頼ストアに依存しています。 通常、システム全体にCato Root CAをインストールすることが十分です。

場合によっては(例えば、CI/CDパイプラインやコンテナ内では)、変数SSL_CERT_FILEを設定して結合バンドルファイルを指すように設定して、信頼の設定を明示的に上書きする必要があります。 

Android Studio

Android StudioはバンドルされたJDK内の独自のcacerts信頼ストアを使用します。 TLSインスペクションを可能にするためには、そのストアにCato Root CAをインポートします。 デフォルトのパスワードはchangeitです。

Linux/macOS

sudo keytool -importcert -noprompt \
  -alias cato-root-ca \
  -file /path/to/CatoNetworksTrustedRootCA.pem \
  -keystore $ANDROID_STUDIO_JDK/lib/security/cacerts \
  -storepass changeit

Windows (PowerShell)

keytool -importcert -noprompt `
  -alias cato-root-ca `
  -file "C:\path\to\CatoNetworksTrustedRootCA.pem" `
  -keystore "C:\Program Files\Android\Android Studio\jre\lib\security\cacerts" `
  -storepass changeit

Git

Gitは通常、OSの信頼ストアを使用します。 Cato Root CAがシステム全体にインストールされている場合、追加の設定は不要です。

GitがCato Root CAを信頼しない場合は、結合バンドルを使用するように明示的に設定します。

git config --global http.sslCAInfo /path/to/cato_combined_ca.pem

この記事は役に立ちましたか?

1人中0人がこの記事が役に立ったと言っています

0件のコメント