La CAFile
opción configura una CA para usar para los certificados de autenticación del cliente; Esto no es lo que quieres.
En su lugar, desea crear el archivo en la cert
opción para contener toda la cadena de certificados aplicable. Querrá guardar una copia de seguridad de ese archivo y luego crear una nueva; básicamente combinando los dos archivos, formateados así:
-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----
Esto obligará a Stunnel a presentar la cadena de certificados completa a los clientes.
Un dato adicional; El openssl s_client
comando es muy útil para probar problemas de la cadena de certificados y verificar cómo su servicio presenta sus certificados.
Editar: Ok ... la cadena de ese paquete de certificados tiene tres profundidades, pero la cadena de confianza tiene dos profundidades. Algo no esta bien.
El certificado superior ("Autoridad de certificación segura de Starfield") está firmado por un emisor llamado "Autoridad de certificación de clase 2 de Starfield" con una huella digital que comienza con ad7e1c28
... pero el segundo certificado en el paquete, nombrado exactamente igual que el firmante del primer certificado, que debe ser exactamente el mismo certificado, tiene una huella digital que comienza 363e4734
y una fecha de vencimiento 10 años antes. Entonces, el tercer certificado (raíz) es el firmante del certificado intermedio incluido ... ¡pero ninguno de esos dos tiene relación con el primero!
Si eso no tiene sentido, no te preocupes. Resumen: trabajo descuidado, alguien dejó caer la pelota en serio construyendo este paquete de certificados. Su mejor apuesta, entonces, es exportar los archivos en formato base-64 desde un navegador que esté validando con éxito la cadena, pegándolos en el formato que enumeré desde allí.
Dado que es un desastre confuso sin culpa tuya, adiviné tu nombre DNS y agarré el certificado, y creo que esta debería ser la cadena completa que necesitas: http://pastebin.com/Lnr3WHc8
Qualys SSLLabs es realmente útil para verificar su configuración después de los cambios.
https://www.ssllabs.com/ssldb/analyze.html
Comprobaciones que tienes
fuente
Para cualquier otra persona que enfrente este problema, la publicación de Shane funcionó, aunque también tuve que incluir el archivo CAFile. Además, al crear la cadena, asegúrese de seguir las instrucciones de nomenclatura de archivos según este artículo
Y si se enfrenta a este problema porque está tratando de usar Websockets con Android Cordova, asegúrese de agregar manualmente wss a sus elementos de la lista blanca de Cordova, ya que el * solo incluye http y https.
fuente