ライセンス | オンプレミスおよびSaas |
製品 | AssessとProtectの両方、もしくは単体 |
製品カテゴリ | Javaエージェント |
サブカテゴリ | 接続 |
問題
Contrast Javaエージェントを使用してアプリケーション起動すると、次のエラーが表示される。
ERROR - Problem resolving features with com.contrastsecurity.agent.features.%
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:
原因
このエラーの原因はいくつか考えられますが、最も一般的な原因はルートCA(ルート認証局)を信頼できないためです。 その場合、次のようなメッセージが表示されます:
Unable to find valid certification path to requested target
PKIXCertPathBuilderImpl could not build a valid CertPath
この問題が発生する理由としては、証明書検証時にファイアウォールやプロキシサーバのCA(認証局)に入れ換わっている可能性が考えられます。
解決方法
これを確認するには、Contrast UIに対して簡単なcurlコマンドを実行してCA(認証局)を検証します:
curl -HAccept:application/json -HAuthorization:test -HAPI-Key:test https://app.contrastsecurity.com/Contrast/api/applications -v
もしくは、プロキシ経由を明示的に指定
curl -HAccept:application/json -HAuthorization:test -HAPI-Key:test https://app.contrastsecurity.com/Contrast/api/applications -v --proxy http://proxyserver.company.com:8080
Server certificate:
* subject: CN=*.contrastsecurity.com
* start date: Sep 10 00:00:00 2018 GMT
* expire date: Oct 10 12:00:00 2019 GMT
* subjectAltName: host "app.contrastsecurity.com" matched cert's "*.contrastsecurity.com"
* issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
* SSL certificate verify ok.
$webRequest = [Net.WebRequest]::Create("https://app.contrastsecurity.com")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "$pwd\Contrast.cer"
方法1 - 例外を許可する
プロキシ/ファイアウォール(Blue Coatなど)の管理者に連絡し、Contrast UIへの通信をバイパスする設定ができるか確認してください。
方法2 - 証明書を信頼する
エージェントを導入するアプリケーションサーバのJVMで使用されているトラストストアに証明書をインポートします。手順は、こちらを参照ください。
方法3 - 証明書の例外を無視する
JVMシステムプロパティを使用する場合、次の設定によって証明書検証のエラーを無視することができます:
-Dcontrast.api.ignore_cert_errors=true
YAML設定ファイルを使用する場合は、次のようになります:
api:
ignore_cert_errors: true