Il presente documento si articola nelle seguenti sezioni:
- Terminologia
- Informazioni generali
- Risoluzione dei problemi
- Gestire i certificati attendibili
- Appendice
Per una panoramica più dettagliata della migrazione in corso della CA principale di Google, consulta Che cosa sta succedendo?.
Terminologia
Di seguito abbiamo raccolto un elenco dei termini più importanti che devi conoscere per questo documento. Per una panoramica più completa della terminologia correlata, consulta le Domande frequenti su Google Trust Services.
- Certificato SSL/TLS
- Un certificato lega una chiave crittografica a un'identità.
- I certificati SSL/TLS vengono utilizzati per autenticare e stabilire connessioni sicure ai siti web. I certificati vengono emessi e firmati crittograficamente da persone giuridiche note come autorità di certificazione.
- I browser si basano sui certificati emessi da autorità di certificazione attendibili per sapere che le informazioni trasmesse vengono inviate al server corretto e che sono criptate durante il transito.
- Secure Sockets Layer (SSL)
- Secure Sockets Layer era il protocollo più ampiamente implementato per criptare le comunicazioni su internet. Il protocollo SSL non è più considerato sicuro e non deve essere utilizzato.
- Transport Layer Security (TLS)
- Transport Layer Security è il successore di SSL.
- Autorità di certificazione (CA)
- Un'autorità di certificazione è come un ufficio passaporti digitale per persone e dispositivi. Emette documenti (certificati) protetti tramite crittografia per attestare che un'entità (ad es. un sito web) è chi dichiara di essere.
- Prima di emettere un certificato, le CA sono responsabili di verificare che i nomi nel certificato siano collegati alla persona o all'entità che lo richiede.
- Il termine autorità di certificazione può riferirsi sia a organizzazioni come Google Trust Services sia a sistemi che emettono certificati.
- Archivio dei certificati radice
- Un archivio dei certificati radice contiene un insieme di autorità di certificazione attendibili per un fornitore di software per applicazioni. La maggior parte dei browser web e dei sistemi operativi ha il proprio archivio dei certificati radice.
- Per essere inclusa in un archivio dei certificati radice, l'autorità di certificazione deve soddisfare requisiti rigorosi stabiliti dal fornitore di software per applicazioni.
- In genere, sono inclusi la conformità agli standard di settore, come i requisiti del Forum CA/Browser.
- Autorità di certificazione radice
- Un'autorità di certificazione radice (o, più correttamente, il relativo certificato) è il primo certificato di una catena di certificati.
- In genere, i certificati CA radice sono autofirmati. Le chiavi private associate vengono memorizzate in strutture altamente sicure e mantenute in stato offline per proteggerle da accessi non autorizzati.
- Autorità di certificazione intermedia
- Un'autorità di certificazione intermedia (o, più correttamente, il relativo certificato) è un certificato utilizzato per firmare altri certificati in una catena di certificati.
- Le CA intermedie esistono principalmente per consentire l'emissione di certificati online, mantenendo al contempo offline il certificato della CA radice.
- Le CA intermedie sono note anche come CA subordinate.
- Autorità di certificazione emittente
- Un'autorità di certificazione emittente, o più correttamente il relativo certificato, è il certificato utilizzato per firmare il certificato più basso in una catena di certificati.
- Questo certificato in fondo è comunemente chiamato certificato dell'abbonato, certificato dell'entità finale o certificato finale. In questo documento utilizzeremo anche il termine certificato del server.
- Catena di certificati
- I certificati sono collegati (firmati in modo crittografico) al loro emittente. Una catena di certificati è composta da un certificato dell'entità finale, da tutti i certificati di emittente e da un certificato radice.
- Firma incrociata
- I clienti dei fornitori di software per applicazioni devono aggiornare il proprio archivio di certificati radice per includere nuovi certificati CA affinché siano considerati attendibili dai loro prodotti. Ci vuole un po' di tempo prima che i prodotti contenenti i nuovi certificati CA vengano utilizzati su larga scala.
- Per aumentare la compatibilità con i client precedenti, i certificati CA possono essere "firmati incrociati" da un'altra CA precedente. In questo modo viene creato un secondo certificato CA per la stessa identità (nome e coppia di chiavi).
- A seconda delle CA incluse nel loro archivio certificati radice, i client creeranno una catena di certificati diversa fino a un certificato radice attendibile.
Informazioni generali
Che cosa sta succedendo?
Introduzione
Nel 2017, Google ha avviato un progetto pluriennale per emettere e utilizzare i propri certificati radice, le firme crittografiche che costituiscono la base della sicurezza di internet TLS utilizzata da HTTPS.
Dopo la prima fase, la sicurezza TLS dei servizi Google Maps Platform è stata garantita da GS Root R2, un'autorità di certificazione (CA) radice molto nota e ampiamente considerata attendibile, che Google ha acquisito da GMO GlobalSign per semplificare la transizione alle nostre CA radice Google Trust Services (GTS) auto-emesse.
Praticamente tutti i client TLS (come browser web, smartphone e server di applicazioni) hanno considerato attendibile questo certificato principale e sono quindi stati in grado di stabilire una connessione sicura ai server di Google Maps Platform durante la prima fase della migrazione.
Tuttavia, un'autorità di certificazione per progettazione non può emettere certificati validi oltre la data e l'ora di scadenza del proprio certificato. Poiché GS Root R2 scade il 15 dicembre 2021, Google eseguirà la migrazione dei propri servizi a una nuova CA, GTS Root R1 Cross, utilizzando un certificato emesso dalla propria CA radice GTS Root R1.
Sebbene la maggior parte dei sistemi operativi e delle librerie client TLS moderni consideri già attendibili le CA radice GTS, per garantire una transizione agevole anche per la maggior parte dei sistemi legacy, Google ha acquisito una firma tra CA da GMO GlobalSign utilizzando la CA radice GlobalSign - R1, una delle CA radice più antiche e attendibili attualmente disponibili.
Pertanto, la maggior parte dei client Google Maps Platform dei clienti riconoscerà già una o entrambe queste CA attendibili di primo livello e non sarà interessata dalla seconda fase della migrazione.
Ciò vale anche per i clienti che hanno intrapreso azioni durante la prima fase della migrazione nel 2018, supponendo che al momento abbiano seguito le nostre istruzioni, installando tutti i certificati del nostro bundle CA radice attendibile di Google.
Devi verificare i tuoi sistemi se si applicano le seguenti condizioni:
- I tuoi servizi utilizzano piattaforme non standard o legacy e/o gestisci il tuo proprio archivio dei certificati radice
- non hai preso provvedimenti nel 2017-2018, durante la prima fase della migrazione della CA radice di Google, o non hai installato l'intero set di certificati del bundle della CA radice attendibile di Google
Se quanto sopra si applica, i tuoi clienti potrebbero dover essere aggiornati con i certificati radice consigliati per garantire un utilizzo ininterrotto di Google Maps Platform durante questa fase della migrazione.
Per ulteriori dettagli tecnici, continua a leggere. Per istruzioni generali, consulta la sezione Come verificare se il mio archivio dei certificati principali richiede un aggiornamento.
Ti consigliamo inoltre di continuare a mantenere aggiornati i tuoi store di certificati radice con il bundle di CA radice selezionato sopra per proteggere i tuoi servizi da future modifiche alle CA radice. Tuttavia, verranno annunciati in anticipo. Per ulteriori istruzioni su come rimanere al passo con gli aggiornamenti, consulta le sezioni Come faccio a ricevere aggiornamenti su questa fase di migrazione? e Come faccio a ricevere una notifica anticipata delle migrazioni future?
Riepilogo tecnico
Come annunciato il 15 marzo 2021 sul blog sulla sicurezza di Google, GS Root R2, la CA principale utilizzata da Google Maps Platform dall'inizio del 2018 scadrà il 15 dicembre 2021. Pertanto, nel corso di quest'anno Google effettuerà la migrazione a una CA di nuova emissione GTS Root R1 Cross. Ciò significa che i nostri servizi effettueranno gradualmente la transizione ai certificati TLS finali emessi da questa nuova CA.
Quasi tutti i client e i sistemi TLS moderni sono già preconfigurati con il certificato GTS Root R1 o dovrebbero riceverlo tramite i normali aggiornamenti software. Inoltre, GlobalSign Root CA - R1 dovrebbe essere disponibile anche sui sistemi precedenti.
Tuttavia, devi verificare i tuoi sistemi almeno se si applicano entrambi i seguenti punti:
- i tuoi servizi vengono eseguiti su piattaforme non standard o precedenti e/o gestisci il tuo proprio archivio dei certificati radice
- non hai preso provvedimenti nel 2017-2018, durante la prima fase della migrazione della CA radice di Google, o non hai installato l'intero set di certificati del bundle della CA radice attendibile di Google
La sezione Come verificare se il mio archivio dei certificati radice ha bisogno di un aggiornamento fornisce indicazioni generali per verificare se il tuo sistema è interessato.
Per maggiori dettagli, vedi la domanda Perché devo mantenere sincronizzato il mio archivio dei certificati radice con il bundle CA radice attendibile di Google?
Come faccio a ricevere aggiornamenti su questa fase di migrazione?
Aggiungi a Speciali il problema pubblico 186840968 per ricevere aggiornamenti. Queste domande frequenti vengono aggiornate anche durante il processo di migrazione, ogni volta che incontriamo argomenti che potrebbero essere di interesse generale.
Come faccio a ricevere una notifica anticipata delle migrazioni future?
Ti consigliamo di seguire il Google Security Blog. Inoltre, ci impegneremo ad aggiornare la documentazione specifica del prodotto il prima possibile, in seguito all'annuncio pubblico sul blog.
Iscriviti anche alle notifiche di Google Maps Platform, perché nel forum pubblichiamo regolarmente aggiornamenti sulle modifiche che potrebbero interessare un numero maggiore di clienti.
Utilizziamo più servizi Google. La migrazione della CA radice li interesserà tutti?
Sì, la migrazione della CA principale verrà eseguita in tutti i servizi e le API Google, ma le tempistiche possono variare in base al servizio. Tuttavia, dopo aver verificato che gli archivi dei certificati radice utilizzati dalle applicazioni client di Google Maps Platform contengono tutte le CA elencate nel bundle di CA radice attendibili di Google, i tuoi servizi non dovrebbero essere interessati dalla migrazione in corso e mantenerli sincronizzati ti proteggerà anche da future modifiche delle CA radice.
Per ulteriori informazioni, consulta le domande Perché dovrei mantenere sincronizzato il mio truststore dei certificati radice con il bundle CA radice attendibile di Google? e Quali tipi di applicazioni rischiano di non funzionare?
La sezione Come verificare se il mio archivio dei certificati radice ha bisogno di un aggiornamento di seguito fornisce anche istruzioni generali per testare il sistema.
Come verificare se il mio archivio dei certificati principali ha bisogno di un aggiornamento
Testa l'ambiente dell'applicazione in base agli endpoint di test elencati di seguito:
- Se riesci a stabilire una connessione TLS all'endpoint di test cross GTS Root R1, l'eventuale scadenza di GS Root R2 non dovrebbe influire sulla tua attività.
- Se riesci a stabilire una connessione TLS all'endpoint di test GTS Root R1, la tua applicazione sarà probabilmente protetta anche dalla scadenza di GTS Root R1 Cross e GlobalSign Root CA - R1 nel 2028.
In genere, il sistema sarà compatibile con questa modifica della CA principale se:
- il tuo servizio viene eseguito su un sistema operativo di uso comune gestito e hai aggiornato sia il sistema operativo sia le librerie utilizzate dal servizio e non gestisci il tuo archivio dei certificati principali, oppure:
- hai seguito i nostri consigli precedenti e hai installato tutte le CA radice dal bundle di CA radice attendibili di Google
I clienti potenzialmente interessati devono installare immediatamente i certificati del bundle CA radice attendibile di Google per evitare future interruzioni del servizio.
Per maggiori dettagli, vedi la domanda Perché devo mantenere sincronizzato il mio archivio dei certificati radice con il bundle CA radice attendibile di Google?
Esiste uno strumento semplice che posso utilizzare per verificare il nostro archivio dei certificati principali?
Potresti trovare utili due strumenti a riga di comando curl
e openssl
per le tue indagini. Entrambi sono disponibili sulla maggior parte delle piattaforme e offrono opzioni ampie per testare la configurazione.
Per istruzioni su come ottenere curl
, consulta la sezione Ottenere curl
di seguito.
I comandi openssl
riportati di seguito sono per la versione 1.1.1 o successive.
Le versioni precedenti alla 1.1.1 non sono più supportate. Se utilizzi una versione precedente,
esegui l'upgrade o modifica questi comandi in base alle esigenze della tua versione. Per istruzioni su come ottenere openssl
, consulta la sezione Ottenere OpenSSL di seguito.
Troverai altri strumenti utili anche nella sezione Dove posso trovare gli strumenti di cui ho bisogno? di seguito.
Per istruzioni specifiche sui test, consulta la sezione Come verificare se il mio archivio dei certificati principali ha bisogno di un aggiornamento.
Test dell'archivio dei certificati radice predefinito
curl -vvI https://maps.googleapis.com; \
openssl s_client -connect maps.googleapis.com:443 -showcerts </dev/null; \
curl -vvI https://good.gtsr1.demosite.pki.goog/; \
openssl s_client -connect good.gtsr1.demosite.pki.goog:443 -showcerts </dev/null; \
curl -vvI https://good.gtsr1x.demosite.pki.goog/; \
openssl s_client -connect good.gtsr1x.demosite.pki.goog:443 -showcerts </dev/null;
Verificare il bundle della CA radice attendibile di Google
Scarica il bundle della CA radice attendibile di Google, quindi segui questi passaggi:
curl -vvI --cacert roots.pem https://maps.googleapis.com; \
openssl s_client -CAfile roots.pem -connect maps.googleapis.com:443 -showcerts </dev/null; \
curl -vvI --cacert roots.pem https://good.gtsr1.demosite.pki.goog/; \
openssl s_client -CAfile roots.pem -connect good.gtsr1.demosite.pki.goog:443 -showcerts </dev/null; \
curl -vvI --cacert roots.pem https://good.gtsr1x.demosite.pki.goog/; \
openssl s_client -CAfile roots.pem -connect good.gtsr1x.demosite.pki.goog:443 -showcerts </dev/null;
Come e quando continuerà la migrazione della CA radice di Google?
- La prima fase (migrazione a GS Root R2), annunciata a gennaio 2017, è iniziata alla fine del 2017 ed è terminata nella prima metà del 2018.
- La seconda fase (migrazione a GTS Root R1 Cross) è stata annunciata a marzo 2021 e verrà implementata nei prossimi mesi, prima della scadenza di GS Root R2 il 15 dicembre 2021.
Le tempistiche delle eventuali fasi di migrazione successive verranno annunciate con molto anticipo rispetto alle scadenze future dei certificati.
Tuttavia, potrai rendere le tue app future-proof se mantieni aggiornato il tuo archivio dei certificati radice con l'elenco selezionato di CA radice nel bundle di CA radice attendibili di Google.
Per ulteriori informazioni, consulta anche la domanda Perché devo mantenere sincronizzato il mio archivio dei certificati radice con il bundle CA radice attendibile di Google?
Piano di implementazione generale per ogni servizio Google
- L'implementazione graduale inizia in un singolo data center.
- L'implementazione viene estesa gradualmente ad altri data center fino a coprire l'intero mondo.
- Se in qualsiasi fase vengono rilevati problemi gravi, i test possono essere annullati temporaneamente mentre i problemi vengono risolti.
- In base ai dati delle iterazioni precedenti, altri servizi Google vengono inclusi nell'implementazione finché gradualmente non viene eseguita la migrazione di tutti i servizi Google ai nuovi certificati.
Chi sarà interessato, quando e dove?
Un numero crescente di sviluppatori di Google Maps Platform inizierà a ricevere i nuovi certificati man mano che viene eseguita la migrazione a nuovi data center. Le modifiche saranno in qualche modo localizzate, poiché le richieste dei client tendono a essere inoltrate ai server dei data center geograficamente vicini.
Poiché non possiamo sapere con certezza in anticipo chi sarà interessato, quando e dove, consigliamo a tutti i nostri clienti di verificare e rendere future proof i propri servizi con largo anticipo rispetto alle possibili fasi di migrazione della CA principale di Google.
Per ulteriori indicazioni, consulta la sezione Come verificare se il mio archivio dei certificati principali ha bisogno di un aggiornamento.
Aspetti a cui prestare attenzione
I client non configurati con il certificato radice necessario non potranno verificare la connessione TLS a Google Maps Platform. In questa situazione, in genere i client emetteranno un avviso che indica che la convalida del certificato non è riuscita.
A seconda della configurazione TLS, i client possono continuare a emettere una richiesta di Google Maps Platform o rifiutarsi di continuare con la richiesta.
Quali sono i requisiti minimi per la comunicazione di un client TLS con Google Maps Platform?
I certificati della piattaforma Google Maps utilizzano nomi alternativi dell'oggetto (SAN) DNS, pertanto la gestione dei certificati di un cliente deve essere in grado di supportare i SAN che possono includere un singolo carattere jolly come etichetta più a sinistra nel nome, ad esempio *.googleapis.com
.
Per altri requisiti, consulta la sezione Quali sono i requisiti consigliati per la comunicazione di un client TLS con Google? nelle Domande frequenti sul GTS.
Quali tipi di applicazioni rischiano di non funzionare?
L'applicazione utilizza il repository dei certificati radice di sistema senza restrizioni imposte dallo sviluppatore
Applicazioni di servizi web di Google Maps Platform
Se utilizzi un sistema operativo di uso comune, ad esempio Ubuntu, Red Hat, Windows 10 o Server 2019, OS X) che è ancora in uso e riceve aggiornamenti regolari, il tuo deposito dei certificati radice predefinito dovrebbe già includere il certificato GTS Root R1.
Se utilizzi una versione precedente del sistema operativo che non riceve più aggiornamenti, potresti o meno disporre del certificato GTS Root R1. Tuttavia, il tuo magazzino dei certificati radice conterrà molto probabilmente GlobalSign Root CA - R1, una delle CA radice più antiche e più ampiamente attendibili.
Per le applicazioni mobile che chiamano i servizi web di Google Maps Platform direttamente dal dispositivo dell'utente finale, si applicano le linee guida della domanda Le app mobile rischiano di non funzionare?
Applicazioni lato client di Google Maps Platform
In genere le applicazioni dell'API Maps JavaScript si basano sui certificati di primo livello del browser web che esegue l'applicazione. Per ulteriori dettagli, consulta la sezione Le applicazioni JavaScript rischiano di non funzionare più?
Per le applicazioni mobile native che utilizzano Maps SDK for Android, Maps SDK for iOS, Places SDK for Android o Places SDK for iOS, valgono le stesse regole previste per le app che richiamano i servizi web di Google Maps Platform.
Per ulteriori dettagli, consulta la domanda Le app mobile rischiano di non funzionare più?
L'app utilizza il proprio bundle di certificati o funzionalità di sicurezza avanzate, come il pinning dei certificati
Dovrai assicurarti di aggiornare autonomamente il tuo bundle di certificati. Come discusso nella domanda Perché dovrei mantenere il mio archivio dei certificati radice sincronizzato con il bundle CA radice attendibile di Google?, ti consigliamo di importare tutti i certificati dal bundle CA radice attendibile di Google nel tuo archivio dei certificati radice.
Se esegui il pinning di certificati o chiavi pubbliche per i domini Google a cui si connette la tua applicazione, devi aggiungere i certificati e le chiavi pubbliche all'elenco delle entità attendibili nella tua applicazione.
Per ulteriori informazioni sul pinning del certificato o della chiave pubblica, consulta le risorse esterne elencate nella domanda Hai bisogno di maggiori informazioni?.
Perché devo mantenere sincronizzato il mio archivio dei certificati radice con il bundle CA radice attendibile di Google?
L'elenco selezionato di CA radice nel bundle di CA radice attendibili di Google include tutte le CA che potrebbero essere plausibilmente utilizzate dai servizi Google nel futuro prevedibile.
Pertanto, se vuoi rendere il tuo sistema adatto al futuro, ti consigliamo vivamente di verificare che il tuo magazzino dei certificati radice contenga tutti i certificati del bundle e di acquisire l'abitudine di mantenere sincronizzati i due.
Questo è particolarmente importante se i tuoi servizi vengono eseguiti su una versione del sistema operativo non gestita, se per altri motivi non riesci a mantenere aggiornati il sistema operativo e le librerie o se gestisci il tuo archivio dei certificati principali.
Consulta la domanda Come faccio a ricevere una notifica anticipata delle migrazioni future? per scoprire come ricevere aggiornamenti sulle migrazioni future delle CA radice. Mantenendo regolarmente aggiornato il tuo archivio dei certificati radice con l'elenco selezionato, proteggerai i tuoi servizi da future interruzioni a causa di modifiche delle CA e manterrai i tuoi servizi in esecuzione oltre la scadenza sia di GTS Root R1 Cross che di GlobalSign Root CA - R1.
Inoltre, fai riferimento alla domanda Sto creando un prodotto che si connette ai servizi Google. Quali certificati CA devo considerare attendibili? nelle Domande frequenti sul GTS per ulteriori consigli.
Perché non devo installare certificati CA intermedi o di primo livello?
In questo modo rischi di interrompere l'applicazione ogni volta che registri un nuovo
certificato o cambi le CA intermedie. Entrambe le situazioni possono verificarsi in qualsiasi
momento e senza preavviso e si applicano allo stesso modo ai singoli certificati
del server, come quelli pubblicati da maps.googleapis.com
, nonché a qualsiasi
delle nostre CA intermedie, come GTS Root R1 Cross.
Per proteggere i tuoi servizi da questo problema, devi solo installare i certificati radice dal bundle dell'autorità di certificazione radice di Google attendibile e fare affidamento solo sul certificato radice per verificare l'attendibilità dell'intera catena di certificati ad esso ancorata.
Qualsiasi implementazione moderna della libreria TLS dovrebbe essere in grado di verificare automaticamente queste catene di attendibilità, a condizione che l'autorità di certificazione radice sia attendibile.
Le applicazioni JavaScript rischiano di non funzionare?
I certificati radice GTS sono già ben integrati e considerati attendibili dalla maggior parte dei browser moderni e la firma tra GMO GlobalSign dovrebbe garantire una transizione agevole anche per la maggior parte degli utenti finali che utilizzano browser legacy. Sono inclusi tutti browser supportati per l'API Maps JavaScript.
Ogni browser moderno dovrebbe consentire agli utenti finali di verificare e in genere modificare i certificati considerati attendibili dal browser. Sebbene la posizione esatta sia diversa per ogni browser, in genere l'elenco dei certificati si trova in Impostazioni.
Le app mobile rischiano di non funzionare?
Anche i dispositivi Android e Apple iOS che continuano a ricevere aggiornamenti regolari dal produttore dovrebbero essere compatibili con le versioni future. La maggior parte dei modelli di smartphone Android meno recenti include almeno il certificato GlobalSign Root CA - R1, anche se l'elenco dei certificati attendibili può variare in base al produttore dello smartphone, al modello di dispositivo e alla versione di Android.
Tuttavia, il supporto per le CA radice GTS, inclusa GTS Root R1, potrebbe essere ancora limitato nelle versioni di Android precedenti alla 10.
Per i dispositivi iOS, Apple gestisce un elenco di CA attendibili per ogni versione recente di iOS nelle sue pagine di assistenza. Tuttavia, tutte le versioni di iOS 5 e successive supportano GlobalSign Root CA - R1.
Le CA radice GTS, inclusa GTS Root R1, sono supportate dalla versione iOS 12.1.3.
Per ulteriori dettagli, consulta la domanda Come faccio a controllare i certificati radice attendibili sul mio cellulare?
Quando il mio browser o sistema operativo includerà i certificati radice di Google Trust Services?
Negli ultimi anni Google ha collaborato ampiamente con tutte le principali terze parti per mantenere in vita bundle di certificati radice ampiamente utilizzati e attendibili. Alcuni esempi sono i produttori di sistemi operativi, come Apple e Microsoft, ma anche i team di Android e Chrome OS di Google; gli sviluppatori di browser, come Mozilla, Apple, Microsoft, ma anche il team di Chrome di Google; i produttori di hardware, come smartphone, set-top box, TV, console per videogiochi, stampanti e così via.
È quindi molto probabile che qualsiasi sistema attualmente gestito supporti già le nuove CA radice GTS di Google, inclusa GTS Root R1, e anche i sistemi legacy supportano molto probabilmente GlobalSign Root CA - R1, che verrà utilizzato per la firma tra certificati dei certificati emessi da Google nei prossimi anni.
Tuttavia, poiché le tempistiche di inclusione dei certificati di terze parti sono in gran parte al di fuori del controllo di Google, il miglior consiglio generale che possiamo offrire è assicurarti di applicare regolarmente gli aggiornamenti di sistema disponibili.
Terze parti selezionate, come il programma di certificazione delle CA di Mozilla, potrebbero aver documentato le proprie tempistiche di inclusione dei certificati.
Risoluzione dei problemi
Dove posso trovare gli strumenti di cui ho bisogno?
Ottenere curl
Se la distribuzione del sistema operativo non fornisce curl
, puoi scaricarlo da https://curl.haxx.se/. Puoi scaricare il codice sorgente e compilare lo strumento autonomamente oppure scaricare un file binario precompilato, se disponibile per la tua piattaforma.
Ottenere OpenSSL
Se la distribuzione del sistema operativo non fornisce openssl
, puoi scaricare il codice sorgente da https://www.openssl.org/ e compilare lo strumento. Puoi trovare un elenco di binari compilati da terze parti all'indirizzo
https://www.openssl.org/community/binaries.html.
Tuttavia, nessuna di queste build è supportata o approvata in modo specifico dal team di OpenSSL.
Ottenere Wireshark, Tshark o Tcpdump
Sebbene la maggior parte delle distribuzioni Linux offra wireshark
, il relativo strumento a riga di comando tshark
e tcpdump
, le versioni precompilate dei primi due per altri sistemi operativi sono disponibili all'indirizzo https://www.wireshark.org.
Il codice sorgente di Tcpdump e LibPCAP è disponibile all'indirizzo https://www.tcpdump.org.
La documentazione di questi utili strumenti è disponibile nella Guida dell'utente di Wireshark, nella pagina di manuali di Tshark e nella pagina di manuali di Tcpdump.
Ottenere Keytool Java
Lo strumento a riga di comando keytool
dovrebbe essere fornito con ogni versione di Java Development Kit (JDK) o Java Runtime Environment (JRE). Installa questi elementi per ottenere keytool.
. Tuttavia, è improbabile che l'utilizzo di keytool.
sia necessario per la verifica del certificato radice, a meno che l'applicazione non sia creata utilizzando Java.keytool
Cosa fare in caso di interruzione della produzione
La procedura principale consiste nell'installare i certificati radice richiesti dal bundle CA radice attendibile di Google nell'archivio dei certificati radice utilizzato dalla tua applicazione.
- Collabora con gli amministratori di sistema per eseguire l'upgrade del tuo magazzino dei certificati radice locale.
- Consulta queste domande frequenti per trovare indicazioni applicabili al tuo sistema.
- Se hai bisogno di ulteriore assistenza specifica per la piattaforma o il sistema, contatta i canali di assistenza tecnica offerti dal tuo provider di sistema.
- Per assistenza generale, contatta il nostro team di assistenza, come descritto nella sezione Contattare l'assistenza di Google Maps Platform. Nota: per i problemi specifici della piattaforma, le indicazioni vengono fornite solo secondo il criterio del "best effort".
- Aggiungi il problema pubblico 186840968 ai preferiti per ricevere ulteriori aggiornamenti relativi alla migrazione.
Contattare l'assistenza Google Maps Platform
Risoluzione dei problemi iniziale
Per istruzioni generiche sulla risoluzione dei problemi, consulta la sezione Come verificare se il mio archivio dei certificati principali ha bisogno di un aggiornamento.
La sezione Gestire i certificati attendibili può anche fornire informazioni utili se devi importare o esportare i certificati radice.
Se il problema persiste e decidi di contattare l'assistenza di Google Maps Platform, tieni presente che dovrai fornire anche le seguenti informazioni:
- Dove si trovano i server interessati?
- Quali indirizzi IP di Google chiama il tuo servizio?
- Quali API sono interessate da questo problema?
- Quando esattamente si è verificato il problema?
Output dei seguenti comandi:
curl -vvI https://maps.googleapis.com; \ openssl s_client -connect maps.googleapis.com:443 -showcerts </dev/null; \ curl -vvI https://good.gtsr1.demosite.pki.goog/; \ openssl s_client -connect good.gtsr1.demosite.pki.goog:443 -showcerts </dev/null; \ curl -vvI https://good.gtsr1x.demosite.pki.goog/; \ openssl s_client -connect good.gtsr1x.demosite.pki.goog:443 -showcerts </dev/null;
Per istruzioni su come ottenere gli strumenti necessari, vedi la domanda Dove posso trovare gli strumenti di cui ho bisogno?.
Presentazione di una richiesta di assistenza
Segui le istruzioni per la creazione di una richiesta di assistenza riportate nella sezione Assistenza e risorse per Google Maps Platform.
Quando invii una richiesta di assistenza, oltre ai dati elencati nella sezione Risoluzione dei problemi iniziali, fornisci anche quanto segue:
- Quali sono i tuoi indirizzi IP pubblici?
- Qual è l'indirizzo IP pubblico del tuo server DNS?
- Se possibile, un'acquisizione di pacchetti tcpdump o Wireshark della negoziazione TLS non riuscita con
https://maps.googleapis.com/
in formato PCAP, utilizzando una lunghezza dello snapshot sufficientemente grande per acquisire l'intero pacchetto senza troncarlo (ad es. utilizzando-s0
su versioni precedenti ditcpdump
). - Se possibile, acquisisci estratti del tuo servizio che mostrino il motivo esatto dell'errore di connessione TLS, preferibilmente con informazioni complete sulla catena di certificati del server.
Per istruzioni su come ottenere gli strumenti necessari, vedi la domanda Dove posso trovare gli strumenti di cui ho bisogno?.
Pubblicazione del problema pubblico 186840968
Quando pubblichi un commento sul problema pubblico 186840968, invia le informazioni elencate nella sezione Risoluzione dei problemi iniziali.
Come faccio a determinare l'indirizzo pubblico del mio DNS?
Su Linux, puoi eseguire il seguente comando:
dig -t txt o-o.myaddr.l.google.com
Su Windows puoi utilizzare nslookup in modalità interattiva:
C:\> nslookup -
set type=TXT
o-o.myaddr.l.google.com
Come interpretare l'output di curl
L'esecuzione di curl
con i flag -vvI
fornisce molte informazioni utili. Ecco alcune istruzioni per interpretare l'output:
- Le righe che iniziano con "
*
" mostrano l'output della negoziazione TLS, nonché le informazioni sulla terminazione della connessione. - Le righe che iniziano con "
>
" mostrano la richiesta HTTP in uscita inviata dacurl
. - Le righe che iniziano con "
<
" mostrano la risposta HTTP ricevuta dal server. - Se il protocollo era HTTPS, la presenza di righe "
>
" o "<
" implica un handshake TLS riuscito.
Libreria TLS e bundle di certificati radice utilizzati
L'esecuzione di curl
con i flag -vvI
stampa anche il
deposito dei certificati principali utilizzati, ma l'output esatto può variare in base al sistema, come mostrato qui.
L'output di una macchina Red Hat Linux con curl
collegato a NSS
potrebbe contenere queste righe:
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
L'output di una macchina Linux Ubuntu o Debian potrebbe contenere queste righe:
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
L'output di una macchina Linux Ubuntu o Debian che utilizza il file PEM del certificato radice di Google fornito utilizzando il flag --cacert
può contenere queste righe:
* successfully set certificate verify locations:
* CAfile: /home/<user>/Downloads/roots.pem
CApath: /etc/ssl/certs
User agent
Le richieste in uscita contengono l'intestazione User-Agent, che può fornire informazioni utili su curl
e sul tuo sistema.
Un esempio da una macchina Red Hat Linux:
> HEAD / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh1/1.4.2
> Host: maps.googleapis.com
> Accept: */*
>
Handshake TLS non riuscito
Le righe, come quelle in questo esempio di codice, indicano che la connessione è stata interrotta durante l'handshake TLS a causa di un certificato del server non attendibile. Anche l'assenza di output di debug che inizia con >
o <
è un chiaro indicatore di un tentativo di connessione non riuscito:
*** SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0**
Handshake TLS riuscito
Un handshake TLS riuscito è indicato dalla presenza di righe simili
a quelle in questo esempio di codice. Deve essere elencata la suite di crittografia utilizzata per la connessione criptata, così come i dettagli del certificato del server accettato. Inoltre, la presenza di righe che iniziano con >
o
<
indica che il traffico HTTP del payload viene trasmesso correttamente
tramite la connessione criptata TLS:
* Trying 108.177.15.95:443...
* Connected to maps.googleapis.com (108.177.15.95) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google LLC; CN=upload.video.google.com
* start date: Mar 23 08:24:47 2021 GMT
* expire date: Jun 15 08:24:46 2021 GMT
* subjectAltName: host "maps.googleapis.com" matched cert's "*.googleapis.com"
* issuer: C=US; O=Google Trust Services; CN=GTS CA 1O1
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55c4acf0c560)
> HEAD / HTTP/2
> Host: maps.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
>
> HTTP/2 302
…
Come stampare i certificati del server ricevuti in un formato leggibile
Supponendo che l'output sia in formato PEM, ad esempio l'output diopenssl s_client -connect maps.googleapis.com:443 -showcerts </dev/null
,
puoi stampare il certificato fornito seguendo questi passaggi:
Copia l'intero certificato con codifica Base64, incluse intestazione e piè di pagina:
-----BEGIN CERTIFICATE----- … -----END CERTIFICATE-----
Poi:
openssl x509 -inform pem -noout -text ````
Poi incolla i contenuti del buffer di copia nel terminale.
Premi il tasto Invio.
Per esempi di input e output, consulta la sezione Come stampare i certificati PEM in un formato leggibile.
Che aspetto hanno i certificati Google con firma tra enti in OpenSSL?
…
---
Certificate chain
0 s:C = US, ST = California, L = Mountain View, O = Google LLC, CN = good.gtsr1x.demosite.pki.goog
i:C = US, O = Google Trust Services LLC, CN = GTS Y1
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
1 s:C = US, O = Google Trust Services LLC, CN = GTS Y1
i:C = US, O = Google Trust Services LLC, CN = GTS Root R1
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
2 s:C = US, O = Google Trust Services LLC, CN = GTS Root R1
i:C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
---
Server certificate
subject=C = US, ST = California, L = Mountain View, O = Google LLC, CN = good.gtsr1x.demosite.pki.goog
issuer=C = US, O = Google Trust Services LLC, CN = GTS Y1
---
…
Gestione dei certificati attendibili
Come faccio a controllare i certificati radice attendibili sul mio cellulare?
Certificati attendibili Android
Come indicato nella domanda Le app mobile rischiano di non funzionare?, Dalla versione 4.0, Android consente agli utenti di verificare l'elenco dei certificati attendibili in Impostazioni. Questa tabella mostra il percorso esatto del menu Impostazioni:
Versione di Android | Percorso del menu |
---|---|
1.x, 2.x, 3.x | N/D |
4.x, 5.x, 6.x, 7.x | Impostazioni > Sicurezza > Credenziali attendibili |
8.x, 9 | Impostazioni > Sicurezza e posizione > Crittografia e credenziali > Credenziali attendibili |
10+ | Impostazioni > Sicurezza > Avanzate > Crittografia e credenziali > Credenziali attendibili |
Questa tabella illustra la probabilità di disponibilità dei certificati di root più critici per versione di Android, in base alla verifica manuale utilizzando le immagini di sistema Android Virtual Device (AVD) attualmente disponibili, facendo riferimento alla cronologia delle versioni del repository Git ca-certificates AOSP, dove le immagini di sistema non erano più disponibili:
Versione di Android | GTS Root R1 | GlobalSign Root CA - R1 | GlobalSign Root R2 (valido fino al 15 dicembre 2021) |
---|---|---|---|
2.3, 3.2, 4.x, 5.x, 6.x, 7.x, 8.x, 9 | |||
10+ |
In genere, non è possibile aggiornare il repository dei certificati di root del sistema Android senza un aggiornamento del firmware o il rooting del dispositivo. Tuttavia, sulla maggior parte delle versioni di Android ancora in uso, l'attuale insieme di certificati radice attendibili dovrebbe fornire un servizio ininterrotto per diversi anni a venire, oltre la durata effettiva della maggior parte dei dispositivi attualmente esistenti.
A partire dalla versione 7.0, Android offre agli sviluppatori di applicazioni un metodo sicuro per aggiungere certificati attendibili che sono considerati attendibili solo dalla loro applicazione. Questo viene fatto raggruppando i certificati con l'applicazione e creando una configurazione della sicurezza di rete personalizzata, come descritto nel documento di formazione Best practice di Android per sicurezza e privacy Network Security Configuration.
Tuttavia, poiché gli sviluppatori di applicazioni di terze parti non potranno influire sulla configurazione della sicurezza di rete del traffico proveniente dall'APK di Google Play Services, queste misure potrebbero fornire solo una soluzione parziale.
Sui vecchi dispositivi legacy, l'unica opzione disponibile è fare affidamento su CA aggiunte dall'utente, installate da un criterio di gruppo aziendale applicato al dispositivo dell'utente finale o dagli utenti finali stessi.
Archivio attendibilità iOS
Sebbene Apple non mostri direttamente all'utente del cellulare il proprio insieme predefinito di certificati radice attendibili, l'azienda fornisce link agli insiemi di CA radice attendibili per le versioni di iOS 5 e successive negli articoli dell'Assistenza Apple:
- Elenco dei certificati radice attendibili disponibili in iOS 12.1.3, macOS 10.14.3, watchOS 5.1.3 e tvOS 12.1.2
- iOS 5 e iOS 6: elenco dei certificati radice attendibili disponibili.
Tuttavia, tutti i certificati aggiuntivi installati sul dispositivo iOS dovrebbero essere visibili in Impostazioni > Generali > Profilo. Se non sono installati altri certificati, la voce di menu Profilo potrebbe non essere visualizzata.
Questa tabella illustra la disponibilità dei certificati principali più critici per versione di iOS, in base alle fonti sopra indicate:
Versione iOS | GTS Root R1 | GlobalSign Root CA - R1 | GlobalSign Root R2 (valido fino al 15 dicembre 2021) |
---|---|---|---|
5, 6, 7, 8, 9, 10, 11, 12.0 | |||
12.1.3+ |
Dove si trova il mio archivio dei certificati principali di sistema e come posso aggiornarlo?
La posizione dell'archivio dei certificati principali predefiniti varia in base al sistema operativo e alla libreria SSL/TLS utilizzata. Tuttavia, nella maggior parte delle distribuzioni Linux, i certificati di root predefiniti si trovano in uno dei seguenti percorsi:
/usr/local/share/ca-certificates
: Debian, Ubuntu, versioni precedenti di RHEL e CentOS/etc/pki/ca-trust/source/anchors
e/usr/share/pki/ca-trust-source
: Fedora, versioni più recenti di RHEL e CentOS/var/lib/ca-certificates
: OpenSUSE
Altri percorsi del certificato possono includere:
/etc/ssl/certs
: Debian, Ubuntu/etc/pki/tls/certs
: RHEL, CentOS
Alcuni dei certificati in queste directory sono probabilmente link simbolici a file in altre directory.
Repository dei certificati radice OpenSSL
Per le applicazioni che utilizzano OpenSSL, puoi controllare la posizione configurata dei componenti installati, incluso l'archivio dei certificati principali predefinito, utilizzando il seguente comando:
openssl version -d
Il comando stampa OPENSSLDIR
, che corrisponde alla directory di primo livello in cui si trovano la libreria e le relative configurazioni:
OPENSSLDIR: "/usr/lib/ssl"
L'archivio dei certificati radice si trova nella sottodirectory certs
.
ls -l /usr/lib/ssl/certs
lrwxrwxrwx 1 root root 14 Apr 21 2020 /usr/lib/ssl/certs -> /etc/ssl/certs
ls -l /etc/ssl/certs
…
-rw-r--r-- 1 root root 214904 Apr 15 17:01 ca-certificates.crt
…
lrwxrwxrwx 1 root root 50 Apr 15 16:57 GTS_Root_R1.pem -> /usr/share/ca-certificates/mozilla/GTS_Root_R1.crt
…
Se OpenSSL si basa sull'archivio dei certificati principali di sistema predefinito come nell'esempio riportato sopra, consulta la sezione di primo livello Dove si trova il mio archivio dei certificati principali di sistema e come posso aggiornarlo? per assicurarti che il bundle dei certificati principali di sistema sia aggiornato.
Per istruzioni su come ottenere openssl
, consulta la sezione
Ottenere OpenSSL.
Repository dei certificati radice Java
Le applicazioni Java potrebbero utilizzare il proprio archivio dei certificati radice, che sui sistemi Linux si trova in genere in /etc/pki/java/cacerts
o /usr/share/ca-certificates-java
e può essere gestito utilizzando lo strumento a riga di comando Java keytool
.
Per importare un singolo certificato nell'archivio dei certificati Java, emetti il seguente comando:
keytool -import -trustcacerts -file cert.pem -alias alias -keystore certs.jks
Devi solo sostituire cert.pem
con il file del certificato corrispondente a ogni
certificato radice consigliato, alias
con un alias di certificato univoco ma significativo
e certs.jks
con il file del database dei certificati utilizzato nel tuo
ambiente.
Per ulteriori informazioni, consulta i seguenti articoli di Oracle e Stack Overflow:
- Java Platform, Standard Edition Tools Reference: keytool
- Come ottenere la posizione di cacerts dell'installazione Java predefinita?
- Come importare correttamente un certificato autofirmato nell'archivio chiavi Java disponibile per impostazione predefinita per tutte le applicazioni Java?
Repository dei certificati radice NSS di Mozilla
Per impostazione predefinita, le applicazioni che utilizzano Mozilla NSS possono utilizzare anche un database di certificati di sistema in genere situato in /etc/pki/nssdb
o un magazzino predefinito specifico per l'utente in ${HOME}/.pki/nssdb
.
Per aggiornare il database NSS, utilizza lo strumento certutil
.
Per importare un singolo file del certificato nel database NSS, emetti il seguente comando:
certutil -A -t "C,," -i cert.pem -n cert-name -d certdir
Devi solo sostituire cert.pem
con il file del certificato corrispondente a ogni certificato radice consigliato, cert-name
con un nickname significativo del certificato e certdir
con il percorso del database del certificato utilizzato nel tuo ambiente.
Per ulteriori informazioni, consulta il manuale ufficiale di NSS Tools certutil e la documentazione del tuo sistema operativo.
Repository dei certificati radice Microsoft .NET
Gli sviluppatori Windows .NET potrebbero trovare utili almeno i seguenti articoli Microsoft per aggiornare il proprio archivio dei certificati radice:
Formati file dei certificati
Che cos'è un file PEM?
Privacy-Enhanced Mail (PEM) è un formato file di testo standard de facto per l'archiviazione e l'invio di certificati, chiavi e così via criptati, formalizzato come standard de jure nel RFC 7468.
Sebbene il formato del file sia leggibile, le informazioni sui dati del certificato binario codificato in Base64 non lo sono. Tuttavia, la specifica PEM consente di emettere un testo esplicativo prima o dopo il corpo del certificato codificato in testo e molti strumenti utilizzano questa funzionalità per fornire anche un riepilogo in testo normale degli elementi di dati più pertinenti in un certificato.
Strumenti come openssl
possono essere utilizzati anche per decodificare l'intero certificato in un formato leggibile. Per ulteriori informazioni, consulta la sezione Come stampare i certificati PEM in un formato leggibile.
Che cos'è un file ".crt"?
Gli strumenti che consentono l'esportazione dei certificati in formato PEM solitamente utilizzano l'estensione del file ".crt" per indicare che il file utilizza una codifica di testo.
Che cos'è un file DER?
Distinguished Encoding Rules (DER) è un formato binario standardizzato per la codifica dei certificati. I certificati nei file PEM sono in genere certificati DER con codifica Base64.
Che cos'è un file ".cer"?
Un file esportato con il suffisso ".cer" potrebbe contenere un certificato con codifica PEM, ma più in genere un certificato binario, in genere con codifica DER. Per convezione, i file ".cer" contengono in genere un solo certificato.
Il mio sistema rifiuta di importare tutti i certificati da roots.pem
Alcuni sistemi, ad esempio Java keytool
può importare un solo certificato da un file PEM, anche se ne contiene diversi. Consulta la domanda
Come faccio a estrarre i singoli certificati da roots.pem?
per scoprire come il file può essere suddiviso.
Come faccio a estrarre i singoli certificati da roots.pem?
Puoi suddividere roots.pem
nei relativi certificati dei componenti utilizzando il seguente semplice script bash:
csplit -z -f roots.pem. roots.pem '/-----END CERTIFICATE-----/+1' '{*}' &>/dev/null && \
for f in roots.pem.*; \
do mv "${f}" $(openssl x509 -in "${f}" -noout -issuer_hash).pem; \
done
Dovresti creare una serie di singoli file PEM simili a quelli elencati qui:
ls -l *.pem
-rw-r----- 1 <user> <group> 2217 Apr 28 11:04 02265526.pem
-rw-r----- 1 <user> <group> 1722 Apr 28 11:04 062cdee6.pem
-rw-r----- 1 <user> <group> 1279 Apr 28 11:04 0a775a30.pem
-rw-r----- 1 <user> <group> 2425 Apr 28 11:04 1001acf7.pem
-rw-r----- 1 <user> <group> 1796 Apr 28 11:04 106f3e4d.pem
-rw-r----- 1 <user> <group> 1315 Apr 28 11:04 1d3472b9.pem
-rw-r----- 1 <user> <group> 1919 Apr 28 11:04 244b5494.pem
-rw-r----- 1 <user> <group> 1668 Apr 28 11:04 2b349938.pem
-rw-r----- 1 <user> <group> 1651 Apr 28 11:04 2c543cd1.pem
-rw-r----- 1 <user> <group> 1858 Apr 28 11:04 3513523f.pem
-rw-r----- 1 <user> <group> 2000 Apr 28 11:04 40547a79.pem
-rw-r----- 1 <user> <group> 1862 Apr 28 11:04 4a6481c9.pem
-rw-r----- 1 <user> <group> 1927 Apr 28 11:04 4bfab552.pem
-rw-r----- 1 <user> <group> 1745 Apr 28 11:04 5ad8a5d6.pem
-rw-r----- 1 <user> <group> 1813 Apr 28 11:04 607986c7.pem
-rw-r----- 1 <user> <group> 2425 Apr 28 11:04 626dceaf.pem
-rw-r----- 1 <user> <group> 1738 Apr 28 11:04 653b494a.pem
-rw-r----- 1 <user> <group> 2294 Apr 28 11:04 6b99d060.pem
-rw-r----- 1 <user> <group> 2510 Apr 28 11:04 75d1b2ed.pem
-rw-r----- 1 <user> <group> 1788 Apr 28 11:04 76cb8f92.pem
-rw-r----- 1 <user> <group> 1383 Apr 28 11:04 7f3d5d1d.pem
-rw-r----- 1 <user> <group> 1668 Apr 28 11:04 93bc0acc.pem
-rw-r----- 1 <user> <group> 1220 Apr 28 11:04 9c8dfbd4.pem
-rw-r----- 1 <user> <group> 1838 Apr 28 11:04 9d04f354.pem
-rw-r----- 1 <user> <group> 1279 Apr 28 11:04 a3418fda.pem
-rw-r----- 1 <user> <group> 2194 Apr 28 11:04 aee5f10d.pem
-rw-r----- 1 <user> <group> 1249 Apr 28 11:04 b0e59380.pem
-rw-r----- 1 <user> <group> 1882 Apr 28 11:04 b1159c4c.pem
-rw-r----- 1 <user> <group> 2346 Apr 28 11:04 b727005e.pem
-rw-r----- 1 <user> <group> 1940 Apr 28 11:04 cbf06781.pem
-rw-r----- 1 <user> <group> 2609 Apr 28 11:04 d6325660.pem
-rw-r----- 1 <user> <group> 2474 Apr 28 11:04 dc4d6a89.pem
-rw-r----- 1 <user> <group> 1358 Apr 28 11:04 dd8e9d41.pem
-rw-r----- 1 <user> <group> 1972 Apr 28 11:04 ee64a828.pem
-rw-r----- 1 <user> <group> 1462 Apr 28 11:04 eed8c118.pem
-rw-r----- 1 <user> <group> 1944 Apr 28 11:04 f081611a.pem
-rw-r----- 1 <user> <group> 1488 Apr 28 11:04 f30dd6ad.pem
-rw-r----- 1 <user> <group> 1975 Apr 28 11:04 f387163d.pem
-rw-r----- 1 <user> <group> 2632 Apr 28 11:04 fc5a8f99.pem
-rw-r----- 1 <user> <group> 72865 Apr 20 12:44 roots.pem
I singoli file PEM, come 02265526.pem
, possono essere importati singolarmente o ulteriormente convertiti in un formato file accettato dal tuo magazzino dei certificati.
Come convertire un file PEM in un formato supportato dal mio sistema
Lo strumento a riga di comando del toolkit OpenSSLopenssl
può essere utilizzato per convertire i file tra tutti i formati di file dei certificati più comunemente utilizzati. Di seguito sono riportate le istruzioni per la conversione da un file PEM ai formati di file dei certificati più comunemente utilizzati.
Per un elenco completo delle opzioni disponibili, consulta la documentazione ufficiale degli strumenti a riga di comando OpenSSL.
Per istruzioni su come ottenere openssl
, consulta la sezione
Ottenere OpenSSL.
Come faccio a convertire un file PEM in formato DER?
Con openssl
puoi emettere il seguente comando per convertire un file da PEM
a DER:
openssl x509 -in roots.pem -outform der -out roots.der
Come faccio a convertire un file PEM in PKCS #7?
Con openssl
puoi emettere il seguente comando per convertire un file da PEM
a PKCS #7:
openssl crl2pkcs7 -nocrl -certfile roots.pem -out roots.p7b
Come faccio a convertire un file PEM in PKCS #12 (PFX)?
Con openssl
puoi emettere il seguente comando per convertire un file da PEM
a PKCS #12:
openssl pkcs12 -export -info -in roots.pem -out roots.p12 -nokeys
Devi fornire una password del file quando crei un archivio PKCS #12. Assicurati di conservare la password in un luogo sicuro, se non importi immediatamente il file PKCS #12 nel sistema.
Elencare, stampare ed esportare i certificati dal tuo archivio dei certificati radice
Come faccio a esportare un certificato dall'archivio chiavi Java come file PEM?
Con keytool
puoi emettere il seguente comando per elencare tutti i certificati nel tuo magazzino dei certificati, insieme all'alias che puoi utilizzare per esportarli singolarmente:
keytool -v -list -keystore certs.jks
Basta sostituire certs.jks
con il file del database dei certificati utilizzato nel tuo ambiente. Questo comando mostrerà anche l'alias di ogni certificato, che ti servirà se vuoi esportarlo.
Per esportare un singolo certificato in formato PEM, esegui il seguente comando:
keytool -exportcert -rfc -keystore certs.jks -alias alias > alias.pem
Basta sostituire certs.jks
con il file del database dei certificati utilizzato nel tuo ambiente e fornire alias
e alias.pem
corrispondenti al certificato che vuoi esportare.
Per ulteriori informazioni, consulta il manuale Java Platform, Standard Edition Tools Reference: keytool.
Come faccio a esportare i certificati dall'archivio dei certificati radice NSS come file PEM?
Con certutil
puoi emettere il seguente comando per elencare tutti i certificati nel tuo magazzino dei certificati, insieme al nickname che puoi utilizzare per esportarli:
certutil -L -d certdir
Basta sostituire certdir
con il percorso del database dei certificati utilizzato nel tuo ambiente. Questo comando mostra anche il nickname di ogni certificato, che ti servirà se vuoi esportarlo.
Per esportare un singolo certificato in formato PEM, esegui il seguente comando:
certutil -L -n cert-name -a -d certdir > cert.pem
Basta sostituire certdir
con il percorso del database dei certificati utilizzato nel tuo ambiente e fornire cert-name
e cert.pem
corrispondenti al certificato che vuoi esportare.
Per ulteriori informazioni, consulta il manuale ufficiale di NSS Tools certutil e la documentazione del tuo sistema operativo.
Come stampare i certificati PEM in un formato leggibile
Nei seguenti esempi si presume che tu abbia il file GTS_Root_R1.pem
con i seguenti contenuti:
# Operating CA: Google Trust Services LLC
# Issuer: C=US, O=Google Trust Services LLC, CN=GTS Root R1
# Subject: C=US, O=Google Trust Services LLC, CN=GTS Root R1
# Label: "GTS Root R1
# Serial: 6e:47:a9:c5:4b:47:0c:0d:ec:33:d0:89:b9:1c:f4:e1
# MD5 Fingerprint: 82:1A:EF:D4:D2:4A:F2:9F:E2:3D:97:06:14:70:72:85
# SHA1 Fingerprint: E1:C9:50:E6:EF:22:F8:4C:56:45:72:8B:92:20:60:D7:D5:A7:A3:E8
# SHA256 Fingerprint: 2A:57:54:71:E3:13:40:BC:21:58:1C:BD:2C:F1:3E:15:84:63:20:3E:CE:94:BC:F9:D3:CC:19:6B:F0:9A:54:72
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH
MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX
mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7
zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P
fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc
vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4
Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp
zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO
Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW
k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+
DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF
lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW
Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z
XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR
gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3
d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv
J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg
DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM
+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy
F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9
SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws
E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl
-----END CERTIFICATE-----
Stampa dei file del certificato utilizzando OpenSSL
Emettere il comando
openssl x509 -in GTS_Root_R1.pem -text
Dovresti visualizzare un output simile al seguente:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
6e:47:a9:c5:4b:47:0c:0d:ec:33:d0:89:b9:1c:f4:e1
Signature Algorithm: sha384WithRSAEncryption
Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R1
Validity
Not Before: Jun 22 00:00:00 2016 GMT
Not After : Jun 22 00:00:00 2036 GMT
Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R1
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (4096 bit)
Modulus:
…
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Key Identifier:
E4:AF:2B:26:71:1A:2B:48:27:85:2F:52:66:2C:EF:F0:89:13:71:3E
Signature Algorithm: sha384WithRSAEncryption
…
Per istruzioni su come ottenere openssl
, consulta la sezione
Ottenere OpenSSL.
Stampa dei certificati utilizzando Keytool di Java
Emettere il seguente comando
keytool -printcert -file GTS_Root_R1.pem
Dovresti visualizzare un output simile al seguente:
Owner: CN=GTS Root R1, O=Google Trust Services LLC, C=US
Issuer: CN=GTS Root R1, O=Google Trust Services LLC, C=US
Serial number: 6e47a9c54b470c0dec33d089b91cf4e1
Valid from: Wed Jun 22 02:00:00 CEST 2016 until: Sun Jun 22 02:00:00 CEST 2036
Certificate fingerprints:
SHA1: E1:C9:50:E6:EF:22:F8:4C:56:45:72:8B:92:20:60:D7:D5:A7:A3:E8
SHA256: 2A:57:54:71:E3:13:40:BC:21:58:1C:BD:2C:F1:3E:15:84:63:20:3E:CE:94:BC:F9:D3:CC:19:6B:F0:9A:54:72
Signature algorithm name: SHA384withRSA
Subject Public Key Algorithm: 4096-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]
#2: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
Key_CertSign
Crl_Sign
]
#3: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E4 AF 2B 26 71 1A 2B 48 27 85 2F 52 66 2C EF F0 ..+&q.+H'./Rf,..
0010: 89 13 71 3E ..q>
]
]
Per istruzioni su come ottenere keytool
, consulta la sezione Ottenere Keytool Java.
Come faccio a vedere quali certificati sono installati nel mio archivio dei certificati principali?
Questo valore varia in base al sistema operativo e alla libreria SSL/TLS. Tuttavia, gli strumenti che consentono di importare ed esportare certificati verso e dal magazzino dei certificati radice in genere forniscono anche un'opzione per elencare i certificati installati.
Inoltre, se hai esportato correttamente i certificati radice attendibili in file PEM o se il tuo archivio dei certificati radice contiene già file PEM archiviati, puoi provare ad aprire i file in qualsiasi editor di testo, poiché si tratta di un formato file di testo normale.
Il file PEM potrebbe essere etichettato correttamente, fornendo informazioni leggibili da una persona dell'autorità di certificazione associata (esempio del bundle dell'autorità di certificazione radice attendibile di Google):
# Operating CA: Google Trust Services LLC
# Issuer: C=US, O=Google Trust Services LLC, CN=GTS Root R1
# Subject: C=US, O=Google Trust Services LLC, CN=GTS Root R1
# Label: "GTS Root R1"
# Serial: 6e:47:a9:c5:4b:47:0c:0d:ec:33:d0:89:b9:1c:f4:e1
# MD5 Fingerprint: 82:1A:EF:D4:D2:4A:F2:9F:E2:3D:97:06:14:70:72:85
# SHA1 Fingerprint: E1:C9:50:E6:EF:22:F8:4C:56:45:72:8B:92:20:60:D7:D5:A7:A3:E8
# SHA256 Fingerprint: 2A:57:54:71:E3:13:40:BC:21:58:1C:BD:2C:F1:3E:15:84:63:20:3E:CE:94:BC:F9:D3:CC:19:6B:F0:9A:54:72
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
Il file può anche contenere solo la parte del certificato. In questi casi, il nome del file, ad esempio GTS_Root_R1.pem
, potrebbe indicare a quale CA appartiene il certificato. La stringa del certificato tra i token -----BEGIN CERTIFICATE-----
e -----END CERTIFICATE-----
è inoltre garantita come univoca per ogni CA.
Tuttavia, anche se non disponi degli strumenti sopra indicati, poiché ogni certificato nel
bundle di CA radice attendibili di Google è
etichettato correttamente, puoi associare in modo affidabile le CA radice del bundle a quelle del tuo archivio dei certificati radice tramite Issuer
o confrontando
le stringhe dei certificati dei file PEM.
I browser web possono utilizzare il proprio archivio dei certificati radice o fare affidamento su quello predefinito fornito dal sistema operativo. Tuttavia, tutti i browser moderni dovrebbero consentire di gestire o almeno visualizzare l'insieme delle CA attendibili. Per ulteriori dettagli, consulta la domanda Le applicazioni JavaScript rischiano di non funzionare?
Per istruzioni specifiche per lo smartphone, vedi la domanda distinta Come faccio a controllare i certificati radice attendibili sul mio smartphone?.
Appendice
Per maggiori informazioni,
Fai sempre affidamento principalmente sulla documentazione del sistema operativo, sulla documentazione del linguaggio di programmazione dell'applicazione e sulla documentazione di qualsiasi libreria esterna utilizzata dall'applicazione.
Qualsiasi altra fonte di informazioni, incluse queste domande frequenti, potrebbe essere obsoleta o in altro modo errata e non deve essere considerata autorevole. Tuttavia, potresti trovare ancora informazioni utili in molte delle community di domande e risposte di Stack Exchange, nonché su siti come AdamW su Linux e altro ancora e il blog di conferma, tra gli altri.
Consulta anche le Domande frequenti su Google Trust Services.
Per ulteriori dettagli su argomenti avanzati, come il pinning dei certificati, potresti trovare utili l'articolo Certificate and Public Key Pinning (Pinning dei certificati e delle chiavi pubbliche) e la Pinning Cheat Sheet (Scheda di riferimento sul pinning) di Open Web Application Security Project (OWASP). Per istruzioni specifiche per Android, consulta il documento di formazione ufficiale Best practice per Android per sicurezza e privacy Sicurezza con HTTPS e SSL. Per una discussione sul confronto tra il pinning del certificato e il pinning della chiave pubblica su Android, potrebbe esserti utile il post del blog di Matthew Dolan Sicurezza Android: pinning SSL.
Il documento di formazione Best practice per Android per sicurezza e privacy Configurazione della sicurezza di rete e il post del blog di JeroenHD Android 7 Nougat e autorità di certificazione forniscono ulteriori informazioni sulla gestione di certificati attendibili aggiuntivi su Android.
Per un elenco completo delle CA radice considerate attendibili da AOSP, consulta il repository Git ca-certificates. Per le versioni basate su fork di Android non ufficiali, ad esempio LineageOS, fai riferimento ai repository appropriati forniti dal fornitore del sistema operativo.