Lavoro come tester presso una società di software VoIP. Ci siamo imbattuti in un problema con l'utilizzo di TLS per comunicare con determinati telefoni. I telefoni provengono da produttori diversi ma entrambi presentano lo stesso problema. Per riassumere il più sinteticamente possibile, il telefono rifiuta il certificato fornito durante l'handshake SSL con "CA sconosciuta".
I telefoni usano versioni di OpenSSL nel loro firmware, ma non so quale versione.
Ho verificato in tutti i modi possibili che il certificato della CA attendibile fornito al telefono durante il provisioning e il certificato fornito al telefono durante l'handshake siano gli stessi e corrispondano. Tutto DOVREBBE essere d'oro, tuttavia non lo è.
Quello che ho trovato è che su un sistema in cui tutto funziona correttamente, il certificato CA fornito ha un numero di serie di 10 cifre e nel sistema in cui non è tutto, il certificato CA ha un numero di serie di 12 cifre.
Sembra che una cosa così arbitraria stia causando il rifiuto del certificato, ma questa è letteralmente l'UNICA differenza che ho potuto riscontrare confrontando i sistemi operativi e quelli non funzionanti con i loro certificati.
Questo suona come qualcosa che qualcuno ha sentito prima? Sto impazzendo? Qualsiasi aiuto è apprezzato.
- Edit-- Il nostro PBX utilizza un certificato CA autofirmato per impostazione predefinita. Quindi utilizza Cert per firmare un Cert di linea (Cert server) e firma anche i certificati utilizzati dai telefoni (certificato cliente). Ciò che sembra accadere è che quando vengono generati nuovi certificati server, lo fanno con una serie di 10 cifre.
Ho la possibilità di utilizzare certificati generati in precedenza (generati usando la stessa metodologia) che hanno serie seriali a 12 cifre. Quando si utilizza Server Cert a 12 cifre per completare l'handshake TLS, i telefoni accettano il certificato CA a 12 cifre. Quando si utilizza il Cert 10-Digit Server, i telefoni rifiutano la CA a 12 cifre come "CA sconosciuta". Questo sembra ... completamente arbitrario e sbagliato ma è quello che ho.
I nuovi certificati a 10 cifre vengono generati utilizzando OpenSSL 1.0.1i. I certs a 12 cifre venivano generati utilizzando una versione precedente (penso che sia 0.9.7e). Dubito che importi molto. Un produttore di telefoni utilizza OpenSSL 0.9.7e e l'altro utilizza OpenSSL 1.0.1c-fips