Impossibile eliminare l'errore `net :: ERR_CERT_COMMON_NAME_INVALID` in Chrome con certificati autofirmati


19

Esistono numerose domande sul Web in cui le persone hanno difficoltà a configurare certificati autofirmati per l'uso sulla rete interna.

Solo per collegarne alcuni:
Far accettare a
Chrome il certificato localhost autofirmato Chrome accetta il certificato localhost autofirmato
Generazione di un certificato autofirmato con openssl che funziona in Chrome 58
Certificato StartCom Errore: ERR_CERT_AUTHORITY_INVALID

Ho esaminato ognuno di essi, ma non riesco ancora a liberarmi (net::ERR_CERT_COMMON_NAME_INVALID).dell'errore.

Passaggi seguiti:

  • generazione di chiavi e certificati sul server

    openssl req \          
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout file.key \
    -new \
    -out file.crt \
    -subj /CN=Hostname \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /etc/ssl/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:192.168.0.1')) \
    -sha256 \
    -days 3650
    
  • impostazione del processo server (apache) per utilizzare il certificato e il file chiave appena generati per connessioni sicure

  • esportare il file del certificato dal server al client passando a https://192.168.0.1:3122 tramite Chrome Dev Tools e utilizzando l' opzione Esporta
  • aggiungendo la CA all'elenco delle autorità di certificazione conosciute (su Fedora 26) usando
    • certutil
    • sudo cp file.crt /etc/pki/ca-trust/source/anchors; sudo upate-ca-trust
  • riavvio di Chrome

Ho anche provato diversi valori per il CNcampo di cui sopra, come: hostname, common.name.com, Common Name,192.168.0.1

Anche dopo tutto questo l'errore persiste quando navigo su https://192.168.0.1:3122 e non so più cosa sto facendo.

La rappresentazione del testo è simile a:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            9e:ae:33:24:3a:2d:2b:e2
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = Hostname
        Validity
            Not Before: Oct 28 20:18:06 2017 GMT
            Not After : Oct 26 20:18:06 2027 GMT
        Subject: CN = Hostname
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:a4:80:6c:3a:1b:5e:c4:e6:f6:7d:a5:be:d6:cd:
                    d9:23:bd:1a:b1:e6:f1:e3:b0:76:47:37:a3:d8:b0:
                    60:44:23:c3:8a:58:1c:c3:0a:99:3d:42:32:ca:8b:
                    ec:31:9d:a8:df:6c:13:43:e6:78:12:b8:24:04:5a:
                    9f:6e:11:24:2a:56:e3:20:36:78:a4:cc:ed:45:7c:
                    a3:c1:36:7b:25:f6:6b:2d:01:59:02:74:8b:7a:13:
                    ec:83:63:90:2e:a0:a3:aa:23:de:ea:f0:8e:1f:99:
                    b9:50:b1:5f:64:e4:c9:91:c0:0c:56:15:3c:c0:ff:
                    0f:bf:e1:af:7a:bf:51:40:37:b0:34:20:95:a1:05:
                    14:k2:35:20:e8:98:48:65:ad:26:cc:de:a2:50:48:
                    77:8c:e2:7a:d5:bd:83:96:86:ef:20:79:2f:15:a3:
                    07:48:f4:1f:c7:9d:a1:4b:bd:ee:47:83:51:f3:09:
                    27:ed:b7:09:c8:56:40:0c:68:25:92:d8:62:dc:14:
                    6c:fa:f1:e3:93:1b:79:3c:58:9c:53:69:ff:6a:0f:
                    ee:4c:9f:8e:22:2d:62:6b:b3:ae:22:d6:e3:d0:bd:
                    06:43:a7:c3:e1:1e:23:07:61:b0:4e:64:14:92:0c:
                    5b:f1:a8:c5:29:67:64:7d:65:10:b9:60:41:b8:3b:
                    1y:1f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:192.168.0.1
    Signature Algorithm: sha256WithRSAEncryption
         11:65:6d:86:04:7f:5a:b0:ce:b2:6e:95:7e:03:8c:fe:a9:d0:
         81:2c:6f:50:63:2e:91:77:79:cd:27:32:b0:19:2b:ac:ea:c0:
         4b:f7:56:d9:be:34:54:f1:a6:1d:bc:d0:3b:bb:bf:90:0e:2d:
         1d:83:28:97:8e:f8:37:5d:3e:00:5a:cd:3d:36:5d:c4:5d:a8:
         7e:a4:59:f0:91:3d:af:3d:28:03:3e:78:3b:5b:0a:fb:24:34:
         02:a2:09:ec:d6:0c:58:63:ab:69:26:5e:fe:1d:1f:19:54:0f:
         68:4e:31:f9:de:1e:de:86:81:3f:b7:62:c5:67:02:05:a2:7a:
         03:f4:b5:3b:ba:c4:ba:26:8e:a2:ee:1c:ef:69:63:07:b0:97:
         fd:a8:42:e2:11:6d:de:b5:70:a5:4a:62:d2:62:d9:5b:17:f4:
         d5:cd:6f:71:75:dd:35:33:55:52:2e:30:29:f8:42:ec:b9:d3:
         82:85:a1:e7:f6:f5:90:dd:cb:07:15:a7:44:70:1c:93:e6:ec:
         03:3a:be:41:87:3c:f0:a4:88:a5:65:d9:29:2c:78:de:90:b8:
         6a:8b:99:6e:d0:e5:8c:08:a4:71:51:fd:1d:e1:8c:0c:17:d5:
         b0:31:fc:7f:99:23:dd:1a:c4:0b:45:17:68:88:67:c6:22:df:
         2b:ac:ea:c0

Si noti che questa è la prima volta che imposto i certificati SSL / TLS per tali scopi. Si prega di fornire consigli su come eliminare l'errore.


Aggiungi una rappresentazione testuale del tuo certificato alla tua domanda. Usa openssl x509 -noout -text -in <filename>.
garethTheRed,

Ho aggiunto la rappresentazione testuale.
Ashesh Kumar Singh,

Penso che Chrome si aspetti che l'indirizzo IP venga codificato come indirizzo IP nell'estensione SAN, non in un nome DNS.
Crypt32,

Risposte:


25

Chrome 58+ non corrisponde più al nome comune ( CN) in certs.

Ora utilizza SANinvece i nomi alternativi soggetto ( ).

SANdeve contenere proprio DNSo IPvoce.

  • Quando si utilizza DNS, dovrebbe essere un nome FQDN risolvibile.
  • Quando viene utilizzato un indirizzo IP, dovrebbe essere esplicitamente specificato come tale all'interno della SANcatena.

Detto questo, dovrebbe funzionare:

openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout file.key \
-new \
-out file.crt \
-subj /CN=Hostname \
-reqexts SAN \
-extensions SAN \
-config <(cat /etc/ssl/openssl.cnf \
    <(printf '[SAN]\nsubjectAltName=DNS:hostname,IP:192.168.0.1')) \
-sha256 \
-days 3650

1
In particolare, ciò è dovuto a tools.ietf.org/html/rfc6125#section-5.7.3.1 che afferma "Per l'autenticazione TLS con certificati X.509, un'identità dallo spazio dei nomi DNS DEVE essere verificata su ogni estensione subjectNotName di tipo dNSName presente nel certificato. Se tale estensione non è presente, l'identità DEVE essere confrontata con il (comune) Nome comune nel campo Oggetto del certificato. " Pertanto, se esiste una SAN, il CN non viene controllato.
Jason Martin,

7
Correggimi se sbaglio, ma Chrome non accetta più certificati con fallback su nome comune. Quindi, anche se non esiste una SAN, il CN non viene controllato. Quindi la SAN sembra obbligatoria.
krisFR,

@krisFR ha ragione perché ho già provato con i certificati senza l'estensione SAN che non è riuscita. Specificare il campo IP era la soluzione.
Ashesh Kumar Singh,

1
Salvavita. Per chiunque provi questo su Windows, Cygwin viene fornito con una copia di openssl.cnf qui:. \ Cygwin \ etc \ defaults \ etc \ pki \ tls \ Inoltre, ho dovuto cambiare il mio CN = hostname e DNS: hostname righe per essere localhost invece di hostname
abelito

Ha funzionato perfettamente! Ho dovuto aggiungere il certificato con questa procedura: corvil.com/kb/…
yota,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.