El certificado es de confianza para PC, pero no para Android


Desde esta mañana, mi certificado ya no es de confianza en Android y luego mi aplicación ya no puede conectarse:

 Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
 return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
    at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
    at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)

Si lo intento en Google Chrome (en PC) no hay ningún problema y el certificado es de confianza, pero si lo intento en el navegador Chrome en Android me dice que el certificado no es de confianza. ¿Qué puedo hacer?

Author: Alexander Farber, 2012-07-05

14 answers

Es posible que le falte un certificado intermedio en su archivo cert. Si ya ha visitado otro sitio web que tiene el mismo vendedor de certificados, el certificado intermedio se recuerda en su navegador. Esto podría no - o incluso mejor-no será el caso con cada visitante a su sitio web. Para resolver un certificado intermedio que falta en la conexión SSL, deberá agregar el certificado intermedio a su propio archivo de certificado.

GoDaddy tiene algo de información sobre el certificados intermedios (pero la mejor fuente es siempre su proveedor de certificados): http://support.godaddy.com/help/article/868/what-is-an-intermediate-certificate

Una vez tuve este problema de un cert intermedio (con Commodo también) y tuve que combinar mi propio archivo cert con las CA intermedias para trabajar. Una vez hecho, ya no se produjeron errores.

Instrucciones de instalación por servidor web por Godaddy: http://support.godaddy.com/help/article/5346/installing-an-ssl-server-instructions?locale=en

Y aquí hay una lista de las guías de instalación más comunes de Commodo: https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/1145/0/how-do-i-make-my-own-bundle-file-from-crt-files

Dependiendo del servidor web que esté utilizando, deberá especificar todos los certificados (certificado de dominio, intermedio y raíz) o combinarlos en uno (por ejemplo, para Nginx) en el orden:

  1. certificado de dominio
  2. certificado intermedio
  3. certificado raíz

Una forma fácil de hacer esto en un terminal SSH es escribiendo:

cat domainfile intermediatefile rootfile > targetfile

Herramienta de prueba de certificados

Si encuentra más problemas o no está seguro de si el certificado es correcto, pruebe con una herramienta en línea para verificar su certificado SSL. Por ejemplo: https://www.networking4all.com/en/support/tools/site + check /

Soporte SNI para Android 2.2 y versiones anteriores

Tenga en cuenta que Android 2.2 (y probablemente anterior) no es compatible con SNI, lo que permite que varios certificados SSL para diferentes nombres de host funcionen sin problemas en una sola dirección IP. Gracias a @technyquist por proporcionar esa información. Por favor revise esta pregunta sobre SNI para obtener más información sobre este tema.

 89
Author: Luceos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:09:39

Tienes que crear un paquete crt entonces estará bien. Recibirá tres archivos crt. ¡Úsalos todos! Si solo usaste el dominio.crt entonces habrá advertencia en Android, pero no en PC.

Estoy en nginx. Abrí domain_name.crt y luego abrió positivesslca2.crt, seleccione todo y copie al final de domain_name.crt. A continuación, abra AddTrustExternalCARoot.crt, copia al final de domain_name.crt de nuevo. A continuación, instale el domain_name.crt

Funciona bien.

 19
Author: dallas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-12 17:25:34

Agregar esto aquí ya que podría ayudar a alguien. Estaba teniendo problemas con Android mostrando la ventana emergente y el error de certificado no válido.

Tenemos un certificado de Validación Extendida Comodo y recibimos el archivo zip que contenía 4 archivos:

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSAExtendedValidationSecureServerCA.crt
  • www_mydomain_com.crt

Los concatené todos juntos en una línea como entonces:

cat www_mydomain_com.crt COMODORSAExtendedValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >www.mydomain.com.ev-ssl-bundle.crt

Luego usé ese archivo bundle como mi ssl_certificate_key en nginx. Eso es, funciona ahora.

Inspirado en esta esencia: https://gist.github.com/ipedrazas/6d6c31144636d586dcc3

 7
Author: k00k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-18 15:44:35

Con Comodo PositiveSSL hemos recibido 4 archivos.

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • nuestro dominio.crt

Cuando seguimos las instrucciones en el sitio de comodo, obtenemos un error de que a nuestro certificado le faltaba un archivo de certificado intermedio.

Básicamente la sintaxis es

cat our_domain.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt  AddTrustExternalCARoot.crt > domain-ssl_bundle.crt
 1
Author: Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-29 10:11:59

Recientemente he ren en este problema con Commodo cert compré en ssls.com y he tenido 3 archivos:

Nombre de dominio. ca-bundle nombre de dominio.crt y nombre de dominio.p7b

He tenido que configurarlo en Nginx y este es el comando que ejecuté:

cat domain-name.ca-bundle domain-name.crt > commodo-ssl-bundle.crt

Luego usé commodo-ssl-bundle.crt dentro del archivo de configuración Nginx y funciona como un encanto.

 1
Author: somecallitblues,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-12 10:51:42

Tuve el mismo problema y mi problema fue que el dispositivo no tenía la fecha y hora correctas. Una vez que arreglé que el certificado es de confianza.

 1
Author: Boon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-27 20:42:27

Me encontré con este mismo problema bajo Apache 2.2 cuando estaba tratando de usar múltiples directivas SSLCertificateChainFile para cada certificado intermedio; en su lugar, necesitaba concatenar las tres en un solo archivo. Viniendo de GoDaddy donde habían hecho esto por mí como un "paquete", este paso adicional era nuevo para mí, pero una relectura de la documentación de Apache lo hizo evidente.

Vale la pena señalar, esta directiva es obsoleta a partir de Apache 2.4.8 ya que ahora puede concatenar todos los intermedios con el cert real.

 0
Author: rymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-22 17:15:23

Espero no llegar demasiado tarde, esta solución aquí funcionó para mí, estoy usando COMODO SSL, las soluciones anteriores parecen inválidas con el tiempo, mi sitio web lifetanstic.co.ke

En lugar de contactar con el soporte de Comodo y obtener un archivo CA bundle, puede hacer lo siguiente:

Cuando recibe su nuevo certificado SSL de Comodo (por correo) tienen un archivo zip adjunto. Necesita descomprimir el archivo zip y abrir los siguientes archivos en un editor de texto como bloc de notas:

AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt

Luego copie el texto de cada ".crt "archive y pegue los textos arriba en el campo" Certificate Authority Bundle (opcional)".

Después de eso, simplemente agregue el certificado SSL como de costumbre en el campo "Certificado" y haga clic en el botón "Autofil by Certificate" y presione "Instalar".

 0
Author: Maina Wycliffe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 16:00:13

Con Godaddy certs lo más probable es que tenga un domain.key, gd_bundle_something.crt and (random alphanumeric string) 4923hg4k23jh4.crt

Necesitarás: cat gd_bundle_something.crt >> 4923hg4k23jh4.crt

Y luego, en nginx, usarás

ssl                  on;
ssl_certificate      /etc/ssl/certs/4923hg4k23jh4.crt;
ssl_certificate_key  /etc/ssl/certs/domain.key;
 0
Author: dazito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-03 01:18:39

Yo tenía el mismo problema. Otra forma de generar lo correcto .el archivo crt es así:

A veces se obtiene un.Archivo PEM con una cadena de certificados completa dentro. El archivo puede tener este aspecto....

-----BEGIN RSA PRIVATE KEY-----
blablablabase64private...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
blablablabase64CRT1...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
blablablabase64CRT2...
-----END CERTIFICATE-----
...

Si elimina toda la sección private key, tendrá una cadena válida .crt

 0
Author: David Valdivieso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-12 06:44:10

Tuve el mismo error porque no emití un certificado Let's Encrypt para el www. my-domain.com, sólo para my-domain.com

Publicando también para el www. y configurar el vhost para cargar certificados para www. my-domain.com antes de redirigir a https://my-domain.com hizo el truco.

 0
Author: Adrian Onu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-14 20:00:34

Asegúrese de usar también su crt intermedio (.archivo crt con un paquete.. algunos proveedores también lo llaman bundle o certificado de ca). luego en su ssl.conf,

SSLCertificateFile </path/for/actual/certificate>

SSLCACertificateFile </path/for/actual/intermediate_certificate>

Luego reinicie su servidor web: ex para uso de apache:

sudo service httpd restart
 0
Author: Vikalp Veer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-02 22:11:19

Podría ser que te falta el certificado en tu dispositivo.

Intente mirar esta respuesta: ¿Cómo instalar el certificado de CA de confianza en un dispositivo Android? para ver cómo instalar la CA en su propio dispositivo.

 -1
Author: thepoosh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:33

Tuve un problema similar y escribí un artículo detallado al respecto. Si alguien tiene el mismo problema, siéntase libre de leer mi artículo.

Https://developer-blog.net/administration/ssl-zertifikat-installieren /

Es una descripción detallada del problema en alemán.

 -1
Author: Ziagl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 20:31:51