Introduzione
In questo documento vengono descritti i passaggi per la risoluzione dei problemi relativi allo scenario in cui una catena di certificati firmata da CA (Certification Authority) viene caricata in Finesse per un server Web esterno che ospita un gadget ma il gadget non viene caricato quando si accede a Finesse e viene visualizzato l'errore "SSLPeerUnverifyException".
Contributo di Gino Schweinsberger, Cisco TAC Engineer.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Certificati SSL
- Amministrazione Finesse
- Amministrazione di Windows Server
- Analisi della cattura dei pacchetti con Wireshark
Componenti usati
Le informazioni di questo documento si basano sulle seguenti versioni software:
- Unified Contact Center Express (UCCX) 11.X
- Finesse 11.X
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
Le condizioni dell'errore sono le seguenti:
- Si supponga che la catena di certificati sia caricata in Finesse
- Verificare che i server/servizi corretti siano stati riavviati
- Si supponga che il gadget sia stato aggiunto al layout Finesse con un URL HTTPS e che l'URL sia raggiungibile
Questo è l'errore osservato quando l'agente accede a Finesse:
"Si sono verificati problemi durante il rendering di questo gadget. javax.net.ssl.SSLPeerUnverifyException: peer non autenticato"
Problemi
Scenario 1: Il server di hosting negozia un TLS non sicuro
Quando Finesse Server effettua una richiesta di connessione al server di hosting, Finesse Tomcat annuncia un elenco di cifrari di crittografia che supporta.
Alcune cifrature non sono supportate a causa di vulnerabilità della sicurezza,
Se il server di hosting seleziona una di queste cifrature, la connessione viene rifiutata:
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
È noto che questi cifrari utilizzano chiavi Diffie-Hellman effimere deboli quando negoziano la connessione, e la vulnerabilità Logjam li rende una cattiva scelta per le connessioni TLS.
Seguire il processo di handshake TLS in un'acquisizione pacchetto per verificare quale cifratura viene negoziata.
1. Finesse presenta l'elenco delle cifrature supportate nel passaggio Client Hello:
2. Per questa connessione, TLS_DHE_RSA_WITH_AES_256_CBC_SHA è stato selezionato dal server di hosting durante il passaggio Server Hello perché è più in alto nella lista delle cifrature preferite.
3. Finesse invia un avviso di errore irreversibile e termina la connessione:
Soluzione
Per impedire l'utilizzo di questi cifrari, il server di hosting deve essere configurato in modo da assegnare loro una priorità bassa oppure devono essere rimossi completamente dall'elenco di cifrari disponibili. Questa operazione può essere eseguita in un server Windows con l'editor di Criteri di gruppo di Windows (gpedit.msc).
Nota: per ulteriori dettagli sugli effetti di Logjam in Finesse e l'uso di gpedit, controllare:
Scenario 2: Il certificato contiene un algoritmo di firma non supportato
Le autorità di certificazione di Windows Server possono utilizzare standard di firma più recenti per firmare i certificati. Anche se offre una maggiore sicurezza rispetto a SHA, l'adozione di questi standard al di fuori dei prodotti Microsoft è bassa e gli amministratori probabilmente incontreranno problemi di interoperabilità.
Finesse Tomcat si affida al provider di protezione SunMSCAPI di Java per abilitare il supporto per i vari algoritmi di firma e le funzioni di crittografia utilizzati da Microsoft. Tutte le versioni correnti di Java (1.7, 1.8 e 1.9) supportano solo questi algoritmi di firma:
- MD5 con RSA
- MD2 con RSA
- NONEwithRSA
- SHA1 con RSA
- SHA256conRSA
- SHA384 con RSA
- SHA512con RSA
È consigliabile controllare la versione di Java in esecuzione sul server Finesse per verificare quali algoritmi sono supportati in tale versione. Per controllare la versione dall'accesso alla directory principale, usare questo comando: java - versione
Nota: per ulteriori informazioni sul provider Java SunMSCAPI, visitare il sito Web all'indirizzo https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunMSCAPI
Se un certificato viene fornito con una firma diversa da quelle elencate sopra, Finesse non è in grado di utilizzare il certificato per creare una connessione TLS al server di hosting. Sono inclusi i certificati firmati con un tipo di firma supportato, ma emessi da autorità di certificazione che dispongono di propri certificati intermedi e radice firmati con qualcos'altro.
Se si osserva un'acquisizione di pacchetti, Finesse chiude la connessione con un "avviso di errore irreversibile: Errore "Certificato sconosciuto", come mostrato nell'immagine.
A questo punto è necessario controllare i certificati presentati dal server di hosting e cercare algoritmi di firma non supportati. È comune vedere RSASSA-PSS come l'algoritmo di firma problematico:
Se un certificato della catena è firmato con RSASSA-PSS, la connessione non riesce. In questo caso l'acquisizione del pacchetto indica che la CA radice utilizza RSASSA-PSS per il proprio certificato:
Soluzione
Per risolvere il problema, è necessario che un nuovo certificato venga rilasciato da un provider CA che utilizza solo uno dei tipi di firma SunMSCAPI supportati elencati nell'intera catena di certificati, come descritto in precedenza.
Nota: per ulteriori dettagli sull'algoritmo di firma RSASSA-PSS, vedere https://pkisolutions.com/pkcs1v2-1rsassa-pss/
Nota: Questo problema è registrato nel CSCve79330 difettoso