Me encontré con un problema interesante. Tenemos un script PHP que contacta a un transportista LTL (https://facts.dohrn.com/). Ese script ha fallado porque no puede validar el certificado SSL. Fui al sitio y descubrí que estaban usando un certificado GoDaddy SHA2 (usa elPaquetes de certificados de GoDaddy: G2, que es lo que se utiliza para SHA2).
Tengo ca-certificate
instalada la última versión y parece que la tienen.Autoridad de certificación raíz de Go Daddy: G2pero eso no es lo mismo y falla en todas las formas de validación. Finalmente pude hacerlo funcionar copiando el paquete y usándolo directamente en una solicitud CURL. Pero esto es simplemente una solución. ¿Me falta algo más que pueda hacer que esto funcione sin instalar la CA directamente?
# openssl s_client -connect Facts.dohrn.com:443
CONNECTED(00000003) profundidad=0 OU = Control de dominio validado, CN = Facts.dohrn.com verificar
error:num=20:no se puede obtener el certificado del emisor local verificar retorno:1
profundidad =0 OU = Control de dominio validado, CN = hechos.dohrn.com verificar
error:num=27:certificado no confiable verificar retorno:1 profundidad=0 OU =
Control de dominio validado, CN = hechos.dohrn.com verificar
error:num= 21: no se puede verificar el primer certificado verificar devolución: 1
--- Cadena de certificados 0 s:/OU=Control de dominio validado/CN=facts.dohrn.com
i:/C=US/ST=Arizona/L=Scottsdale/O =GoDaddy.com,
Inc./OU= = Autoridad de certificaciónhttp://certs.godaddy.com/repository//CN
segura de Go Daddy - G2 --- Certificado de servidor [certificado eliminado] -----FIN DEL CERTIFICADO----- sujeto=/OU=Control de dominio validado/CN= fact.dohrn.com Issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU= = Autoridad de certificación segura de Go Daddy - G2 --- No se enviaron nombres de CA de certificados de cliente -- - El protocolo de enlace SSL ha leído 1470 bytes y escrito 563 bytes --- Nuevo, TLSv1/SSLv3, el cifrado es RC4-SHA La clave pública del servidor es de 2048 bits La renegociación segura NO ES compatible Compresión: NINGUNA Expansión: NINGUNA Sesión SSL: Protocolo: Cifrado TLSv1 : RC4-SHA ID de sesión: 1A23000017A7003411F3833970B7FA23C6D782E663CE0C8B17DE4D5A15DEE1A5 ID de sesión-ctx: Clave maestra: F6C9C6345A09B7965AF762DE4BEFE8BDD249136BF30D93 64598D78CF123F17230B0C25DD552F103BEF9A893F75EAD2B0 Key-Arg: Ninguno Krb5 Principal: Ninguno Identidad PSK: Ninguno Sugerencia de identidad PSK: Ninguno Hora de inicio: 1432044402 Tiempo de espera: 300 (seg) Verificar retorno código: 21 (no se puede verificar el primer certificado)http://certs.godaddy.com/repository//CN
Respuesta1
Parece que el servidor web enhttps://facts.dohrn.com/No incluye el certificado intermedio.
Esto parecería ser un error de configuración por su parte. Definitivamente es algo que se puede esperar que cause problemas de compatibilidad, ya que se supone que solo debes confiar en que los clientes tengan los certificados raíz implementados de antemano.
Consulte la cadena de certificados, por ejemplo desde elResultado de SSLLabs: (También notará que hay muchos otros problemas con su configuración SSL).
1 Sent by server facts.dohrn.com
Fingerprint: 823e3a70f194c646498b2591069b3727ad0014d9
RSA 2048 bits (e 65537) / SHA256withRSA
2 Extra download Go Daddy Secure Certificate Authority - G2
Fingerprint: 27ac9369faf25207bb2627cefaccbe4ef9c319b8
RSA 2048 bits (e 65537) / SHA256withRSA
3 In trust store Go Daddy Root Certificate Authority - G2 Self-signed
Fingerprint: 47beabc922eae80e78783462a79f45c254fde68b
RSA 2048 bits (e 65537) / SHA256withRSA
Yo diría que sus opciones principales son intentar convencer al proveedor de servicios para que arregle su servicio o solucionar el problema por su parte proporcionando al cliente los certificados que se esperaba que le proporcionara su servidor.