概要
このドキュメントでは、ガジェットをホストする外部Webサーバの認証局(CA)署名付き証明書チェーンがFinesseにアップロードされるが、Finesseにログインしたときにガジェットがロードされず、エラー「SSLPeerUnverifiedException」が表示されるシナリオのトラブルシューティング手順について説明します。
著者:Cisco TACエンジニア、Gino Schweinsberger
前提条件
要件
次の項目に関する知識があることが推奨されます。
- SSL 証明書
- Finesse管理
- Windows Serverの管理
- Wiresharkによるパケットキャプチャ分析
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。
- Unified Contact Center Express(UCCX)11.X
- Finesse 11.X
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
エラーが発生する条件は次のとおりです。
- 証明書信頼チェーンがFinesseにアップロードされていると仮定する
- 正しいサーバ/サービスが再起動されたことを確認します。
- ガジェットがHTTPS URLを使用してFinesseレイアウトに追加され、URLが到達可能であると仮定します
これは、エージェントがFinesseにログインするときに観察されるエラーです。
「このガジェットのレンダリングで問題が発生しました。javax.net.ssl.SSLPeerUnverifiedException:peer not authenticated
課題
シナリオ 1:ホスティングサーバが非セキュアTLSをネゴシエートする
Finesse Serverがホスティングサーバに接続要求を行うと、Finesse Tomcatはサポートする暗号化方式のリストをアドバタイズします。
セキュリティ上の脆弱性のため、一部の暗号はサポートされていません。
ホスティングサーバがこれらの暗号のいずれかを選択すると、接続は拒否されます。
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
これらの暗号は、接続をネゴシエートするときに弱い一時的なDiffie-Hellman(DH)キーを使用することが知られており、Logjamの脆弱性により、これらはTLS接続に適していません。
パケットキャプチャのTLSハンドシェイクプロセスに従って、ネゴシエートされた暗号を確認します。
1. Finesseは、サポートされている暗号のリストをClient Helloステップで表示します。
2.この接続の場合、TLS_DHE_RSA_WITH_AES_256_CBC_SHAがServer Helloステップ中にホスティングサーバによって選択されました。これは、優先暗号のリストの方が上位にあるためです。
3. FinesseがFatalアラートを送信し、接続を終了します。
解決方法
これらの暗号の使用を防止するには、ホスティングサーバがこれらを低い優先順位に設定するか、使用可能な暗号のリストから完全に削除する必要があります。これは、Windowsグループポリシーエディタ(gpedit.msc)を使用してWindows Serverで実行できます。
注:FinesseでのLogjamの影響とgpeditの使用の詳細については、次を確認してください。
シナリオ 2:証明書にサポートされていない署名アルゴリズムがあります
Windows Serverの証明機関は、新しい署名標準を使用して証明書に署名できます。SHAよりも優れたセキュリティを提供しますが、Microsoft製品以外でこれらの標準を採用することは少なく、管理者は相互運用性の問題に遭遇する可能性があります。
Finesse Tomcatは、JavaのSunMSCAPIセキュリティプロバイダを利用して、Microsoftが使用するさまざまな署名アルゴリズムと暗号化機能のサポートを有効にします。Javaの現在のすべてのバージョン(1.7、1.8、および1.9)は、次の署名アルゴリズムのみをサポートしています。
- MD5withRSA
- MD2withRSA
- NONEwithRSA
- SHA1withRSA
- SHA256withRSA
- SHA384withRSA
- SHA512withRSA
Finesseサーバで実行されているJavaのバージョンを確認し、そのバージョンでサポートされているアルゴリズムを確認することをお勧めします。バージョンは、次のコマンドでルートアクセスから確認できます。javaバージョン
注:Java SunMSCAPIプロバイダーの詳細については、https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunMSCAPIを参照してください。
証明書に上記の署名以外の署名が指定されている場合、Finesseはその証明書を使用してホスティングサーバへのTLS接続を作成できません。これには、サポートされている署名タイプで署名された証明書が含まれますが、それ以外で署名された独自の中間証明書とルート証明書を持つ証明機関によって発行されました。
パケットキャプチャを見ると、Finesseは「Fatal alert:図に示すように、Certificate Unknown」エラーが発生します。
この時点で、ホスティングサーバによって提示された証明書を確認し、サポートされていない署名アルゴリズムを探す必要があります。問題のあるシグニチャアルゴリズムとしてRSASSA-PSSを参照するのが一般的です。
チェーン内のいずれかの証明書がRSASSA-PSSで署名されている場合、接続は失敗します。この場合、パケットキャプチャは、ルートCAが自身の証明書にRSASSA-PSSを使用していることを示します。
解決方法
この問題を解決するには、前に説明したように、証明書チェーン全体でリストされているサポートされているSunMSCAPI署名タイプの1つだけを使用するCAプロバイダから新しい証明書を発行する必要があります。
注:RSASSA-PSS署名アルゴリズムの詳細については、https://pkisolutions.com/pkcs1v2-1rsassa-pss/を参照してください。
注:この問題は、不具合CSCve79330