Saltar al contenido
ecdsa.com
Go crypto/x509Go

Mensaje de error

x509: certificate is not valid for any names, but wanted to match api.example.com

También se muestra como

  • tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match api.example.com

El nombre que sigue a «wanted to match» es el destino de tu conexión. Para certificados sin ninguna extensión SAN, Go dice en cambio «x509: certificate relies on legacy Common Name field, use SANs instead» (cuando el CN habría coincidido).

Go crypto/x509 — HostnameError for a certificate with no DNS SANs (e.g. IP-only or empty SAN list)

Qué significa

Go intenta comparar el nombre de host con el certificado y no encuentra ningún nombre DNS: la extensión SAN existe, pero solo contiene direcciones IP (u otros tipos de entrada), y el nombre común no se tiene en cuenta. Go informa de que el certificado no cubre ningún nombre y añade el nombre que buscaba.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comprobar las entradas SAN y el propósito

    La lista de SAN muestra qué tipos de nombres hay; extendedKeyUsage muestra si se trata siquiera de un certificado de servidor.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -ext subjectAltName,extendedKeyUsage
  2. 2.

    Emitir un certificado de servidor con SAN de tipo DNS

    Incluye los nombres DNS que usan los clientes, más entradas IP si también se conectan por dirección.

    bash
    openssl req -new -key server.key -out server.csr -subj "/CN=api.example.com" \
      -addext "subjectAltName=DNS:api.example.com,IP:10.0.0.5"
  3. 3.

    O conectarse por la dirección que indica el certificado

    Los SAN de tipo IP solo coinciden cuando el cliente se conecta a esa IP.

    go
    // If the certificate is meant for the IP address, dial the IP (it is matched against IP SANs)
    resp, err := client.Get("https://10.0.0.5:8443/")

Errores relacionados

Explorar toda la base de datos de errores de firma