Mensaje de error
The certificate's owner does not match hostname 'api.example.com'
También se muestra como
- ERROR: no certificate subject alternative name matches
Las compilaciones de wget con GnuTLS imprimen esta línea; las compilaciones con OpenSSL imprimen «ERROR: no certificate subject alternative name matches» y, en la línea siguiente, «requested host name '<host>'.». El host es el de tu URL.
Qué significa
El certificado se verificó, pero se emitió para nombres distintos del host de la URL, así que wget se detiene. El host se compara con los nombres DNS de la extensión de nombre alternativo del sujeto (Subject Alternative Name) del certificado, que es donde todas las CA actuales ponen los nombres que cubre un certificado. wget termina con el código de salida 5.
Por qué ocurre
El certificado no cubre este nombre
frecuenteUn certificado para www.example.com no cubre example.com, api.example.com ni un subdominio nuevo; cada nombre debe figurar en la lista, y un comodín cubre una sola etiqueta.
La URL usa una dirección IP o un alias interno
frecuenteAl descargar desde https://10.0.0.5/ o desde un alias de contenedor o de host, se llega al servidor, pero se pide un nombre que el certificado no incluye.
El servidor envió el certificado de otro sitio
ocasionalEn el alojamiento compartido y en los controladores Ingress, un nombre sin su propio bloque server recibe el certificado predeterminado.
Cómo solucionarlo
- 1.
Listar los nombres que cubre el certificado
Compara las entradas subjectAltName con el host de la URL.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Volver a emitir el certificado con el nombre que falta
Añade a la solicitud de certificado todos los nombres de host que usan los clientes; después, despliega el certificado y recarga el servidor.
bash sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com - 3.
Usar un nombre del certificado
Si se puede llegar al servidor con uno de los nombres listados, usa ese nombre en la URL en lugar de una dirección IP o un alias.
bash # Download through a name the certificate lists, not an IP or alias wget https://www.example.com/file.tar.gz
Errores relacionados
curl: (60) SSL: no alternative certificate subject name matches target hostname…curl (OpenSSL backend)fatal: unable to access 'https://git.example.com/team/app.git/': SSL: certifica…git over HTTPS with libcurl-gnutls (Debian, Ubuntu)x509: certificate is valid for example.com, not api.example.comGo crypto/x509