概要
この記事では、コマンドラインツールと開発者向けフレームワークに、Cato NetworksのTLSインスペクション証明書を信頼させ、トラフィックをインスペクションする際にHTTPSがエラーなく動作する方法を示します。 Cato証明書をシステム全体にインストールする方法と、OSの信頼ストアを使わないツール向けに証明書を指定する方法について説明します。
下記のすべての例では、/path/to/CatoNetworksTrustedRootCA.pemを実際の環境のパスに置き換えてください。
証明書システム全体をインストールする(推奨)
CatoルートCAをホストOSにインストールすることで、ほとんどのアプリケーションがインスペクトされたトラフィックを自動的に信頼するようになります。 Cato証明書のインストール方法については、Cato証明書インストール手順を参照してください。
うまくいかない場合、手動でCatoルートCAをOS信頼ストアに追加できます。 Cato証明書のインストールに関する詳細は、関連する記事をご覧ください:
信頼バンドルを上書きするツール用の結合証明書バンドル(
一部のツールは、信頼バンドルを拡張するのではなく上書きし、元々あったすべての証明書を削除します。 これらのツールが公開ウェブサイトとCato検査済みのトラフィックの両方を信頼するようにするためには、OSの信頼されたルート証明書にCatoルートCAを加えた結合バンドルを作成します。
推奨: CatoルートCAをシステムストアにインストールします。 単一のCAファイルが必要なツールのみに結合バンドルを使用します。
メンテナンスのヒント: 結合バンドルを定期的に(例えば毎月またはOS信頼更新後)再構築します。
Windows (PowerShell)
# 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 "結合バンドルは: $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バンドルとCato 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信頼ストアを無視するか、信頼ストアが利用できない環境で動作します。 その場合、明示的にCato CAまたは結合バンドルを使用するように設定します。
一般変数設定の構文
Linux/macOS:
export VARIABLE_NAME=/path/to/fileまたは、永続的な解決策として:
echo 'export VARIABLE_NAME=/path/to/file' >> ~/.zshrc or ~/.bashrc
source ~/.zshrc or ~/.bashrcWindows 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の場合 – 変数 REQUESTS_CA_BUNDLEを結合バンドルに設定します(上記の信頼バンドルを上書きするツール用の結合証明書バンドルの説明に従ってください)。
Windowsの場合 – pip install pip-system-certs を実行し、PythonがWindows信頼ストアを直接使用するようにします。
ツール固有のPythonの修正
macOS/Linux専用で、CatoルートCAをツールのcertifiバンドルに追加するか、そのCA変数を結合バンドルに設定します。
Azure CLI (macOS/Linux)
CLIのcertifiバンドルにCatoルートCAを追加します。 Certifiのバンドル位置を見つけるために、次のコマンドを実行します:
$(az --version 2>&1 | awk -F"'" '/Python location/ {print $2}') -m certifiAWS CLI / Boto (MacOS/Linux)
変数をセットします:
AWS_CA_BUNDLE=/path/to/cato_combined_ca.pemまたは、設定ファイル(~/.aws/config)にこの行を追加します
ca_bundle = /path/to/cato_combined_ca.pemGcloud CLI
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証明書ディレクトリにCatoルートCAを追加して
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はしばしばシステムストアを使用するため、CatoルートCAをシステム全体でインストールするだけで十分です。
Linux/macOS - Node.jsは通常自身のCAバンドルを利用し、CatoルートCAは含まれていません。
Node.js
TLSエラーが発生した場合、Node.jsにCatoルートCAを信頼させるように設定します:
NODE_EXTRA_CA_CERTS変数を設定して、Catoルート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ルートCAと公開ルートCAの両方を信頼します。
Java (Maven, Gradle, JDBC, etc...)
Javaはcacertsという独自の信頼ストアファイルを使用します。 TLSインスペクションを有効化するために、Catoルート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 changeitWindows (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すべてのJavaベースのツール(Maven, Gradle, JDBCドライバ, Salesforce Apex Data Loaderなど)は、Cato CAがcacertsストアに追加されると信頼します。
Docker
Dockerはエンジン/デーモンと任意のイメージ/コンテナから成ります: ホスト上のエンジン/デーモン及び任意のイメージ/コンテナ
DockerのエンジンはホストOSの信頼ストアを使用するため、CatoルートCAをシステム全体でインストールすれば十分です。
イメージでは、コンテナ内にCatoルートCAをインポートする必要があります。
Debian/Ubuntuベースのイメージ:
COPY CatoNetworksTrustedRootCA.pem /usr/local/share/ca-certificates/cato-root-ca.crt
RUN update-ca-certificatesRHEL/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 changeitWindows (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 changeitGit
Gitは通常、OSの信頼ストアを使用します。 Cato Root CAがシステム全体にインストールされている場合、追加の設定は不要です。
GitがCato Root CAを信頼できない場合、結合バンドルを使用するように明示的に設定します:
git config --global http.sslCAInfo /path/to/cato_combined_ca.pem