Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X. info
Questo documento descrive come creare, modificare ed eliminare archivi chiavi e archivi attendibili per Edge per il cloud privato versione 4.17.09 e precedenti.
Informazioni su archivi chiavi e archivi attendibili
Gli archivi chiavi e gli archivi attendibili definiscono repository di certificati di sicurezza utilizzati per TLS la crittografia. La differenza principale tra i due è dove vengono utilizzati nell'handshake TLS di elaborazione:
- Un keystore contiene un certificato TLS e una chiave privata utilizzata per identificare
durante l'handshake TLS.
Nel protocollo TLS unidirezionale, quando un client si connette all'endpoint TLS sul server, l'archivio chiavi del server presenta il certificato del server (certificato pubblico) al client. Il client convalida poi il certificato con un'autorità di certificazione (CA), come Symantec o VeriSign.
Nel sistema TLS bidirezionale, sia il client che il server gestiscono un archivio chiavi con i propri certificati e chiave privata utilizzata per l'autenticazione reciproca. - Un truststore contiene certificati utilizzati per verificare i certificati ricevuti come
nell'ambito dell'handshake TLS.
In TLS unidirezionale, non è necessario un archivio attendibilità se il certificato è firmato da una CA valida. Se il certificato ricevuto da un client TLS è firmato da un'autorità di certificazione valida, il client invia una richiesta all'autorità di certificazione per autenticare il certificato. In genere un client TLS utilizza un archivio attendibilità per convalidare certificati autofirmati ricevuti dal server TLS o certificati che non sono firmati da l'autorità di certificazione attendibile. In questo scenario, il client compila il suo archivio di attendibilità con i certificati che trust. Quando il client riceve un certificato del server, il certificato in entrata viene convalidate in base ai certificati nel relativo archivio attendibilità.
Ad esempio, un client TLS si connette a un server TLS in cui il server utilizza un modello certificato. Poiché si tratta di un certificato autofirmato, il client non può convalidarlo con una CA. Il client precompila invece il certificato autofirmato del server nel proprio truststore. Poi, quando il client tenta di connettersi al server, utilizza il proprio truststore per convalidare il certificato ricevuto dal server.
Per TLS bidirezionale, sia il client TLS sia il server TLS possono utilizzare un truststore. Un archivio attendibilità quando si esegue il protocollo TLS a due vie quando Edge agisce come server TLS.
I certificati possono essere emessi da un'autorità di certificazione (CA) o autofirmati dal chiave privata generata da te. Se hai accesso a una CA, segui le istruzioni fornite dal tuo CA per la generazione di chiavi e l'emissione di certificati. Se non hai accesso a una CA, puoi generare un certificato autofirmato utilizzando uno dei numerosi strumenti senza costi disponibili pubblicamente, come openssl.
Implementazione di un archivio chiavi e un archivio attendibile su Edge
In Edge, un archivio chiavi contiene uno o più file JAR, in cui il file JAR contiene:
- Un certificato TLS come file PEM: un certificato firmato da un'autorità di certificazione (CA), una catena di certificati in cui l'ultimo certificato è firmato da un'autorità di certificazione o un certificato autofirmato.
- Chiave privata come file PEM. Edge supporta dimensioni delle chiavi fino a 2048 bit. La passphrase è facoltativo.
Un truststore è simile a un keystore, tranne per il fatto che contiene solo certificati come file PEM, ma nessuna chiave privata.
Se il certificato fa parte di una catena, il keystore/truststore deve contenere tutti i certificati della catena come singoli file PEM o come un unico file. Se utilizzi un singolo file, i certificati devono essere in ordine, dove il primo certificato nel file è il certificato utilizzato per TLS seguito dalla catena di certificati, in ordine, fino al certificato CA. Devi inserire una riga vuota tra ogni certificato nel file.
Edge fornisce un'API che utilizzi per creare keystore e truststore. Le API effettive sono in modo analogo. La differenza è che quando si crea un archivio chiavi, si passa un file JAR che contiene e una chiave privata. Quando crei un archivio attendibilità, passi solo il certificato come file PEM.
Informazioni sul formato file di certificato e chiave
Gli esempi in questo documento mostrano il certificato e la chiave TLS definiti come file PEM, conformi al formato X.509. Se il certificato o la chiave privata non è definito da un file PEM, puoi convertire in un file PEM utilizzando utilità come Opensl.
Tuttavia, molti file .crt e .key sono già in formato PEM. Se questi file contengono testo e sono racchiusi in:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
oppure:
-----BEGIN ENCRYPTED PRIVATE KEY----- -----END ENCRYPTED PRIVATE KEY-----
I file sono quindi compatibili con il formato PEM e puoi utilizzarli in un keystore o truststore senza doverli convertire in un file PEM.
Se hai una catena di certificati e vuoi utilizzarla in un keystore o truststore, puoi combinare tutti i certificati in un unico file PEM con una nuova riga tra ogni certificato. I certificati devono essere in ordine e l'ultimo deve essere un certificato radice o un certificato intermedio firmato da un certificato radice:
-----BEGIN CERTIFICATE----- (Your Primary TLS certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Intermediate certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root certificate or intermediate certificate signed by a root certificate) -----END CERTIFICATE-----
Visualizzare i dettagli di un keystore esistente
Verifica la presenza di archivi chiavi esistenti nell'ambiente utilizzando la funzione Elenca archivi chiavi e Truststores:
curl -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
Per i clienti cloud, viene fornito un archivio chiavi predefinito per le organizzazioni di prova senza costi sia nel ambienti di test e produzione. Per questa chiamata dovresti vedere i seguenti risultati per entrambi gli ambienti:
[ "freetrial" ]
Puoi usare questo archivio chiavi predefinito per testare le tue API ed eseguirne il push in produzione, di solito crea il tuo archivio chiavi, con il tuo certificato e la tua chiave, prima del deployment in produzione.
Per i clienti Private Cloud, l'array restituito è vuoto fino a quando non crei il primo impostazione di sicurezza.
Controlla i contenuti dell'archivio chiavi utilizzando la funzione Ottieni un'API Keystore o Truststore. Per un cliente cloud, dovresti vedere un singolo certificato TLS del server, ovvero il certificato predefinito fornito da Apigee Edge per gli account di prova gratuiti.
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \ -u email:password
La risposta dovrebbe apparire come:
{ "certs" : [ "wildcard.apigee.net.crt" ], "keys" : [ "freetrial" ], "name" : "freetrial" }
Puoi visualizzare queste informazioni anche nell'interfaccia utente di gestione perimetrale:
- Accedi all'interfaccia utente di gestione di Edge all'indirizzo https://enterprise.apigee.com (cloud) o
http://<ms-ip>:9000
(on-premise), dove<ms-ip>
è l'indirizzo IP del nodo del server di gestione. - Nel menu dell'interfaccia utente di gestione di Edge, seleziona Amministrazione > Certificati TLS.
Ottenere i dettagli del certificato TLS
Puoi utilizzare lo Recupera i dettagli della certificazione da un archivio chiavi o un archivio attendibilità per visualizzare i dettagli sui certificati TLS in l'archivio chiavi, come la data di scadenza e l'emittente. Innanzitutto, ottieni il nome del certificato che ti interessa. Questo esempio recupera le informazioni per il keystore chiamato "freetrial".
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \ -u email:password
Esempio di risposta:
{ "certs" : [ "wildcard.apigee.net.crt" ], "keys" : [ "freetrial" ], "name" : "freetrial" }
Quindi, utilizza il valore della proprietà certs per ottenere i dettagli del certificato:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial/certs/wildcard.apigee.net.crt \ -u email:password
Risposta di esempio:
{ "certInfo" : [ { "expiryDate" : "Wed, 23 Apr 2014 20:50:02 UTC", "isValid" : "Yes", "issuer" : "CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US", "subject" : CN=*.example.apigee.net, OU=Domain Control Validated", "subjectAlternativeNames" : ["*.example.apigee.net","*.example.apigee.net" ], "validFrom" : "Tue, 15 Apr 2014 09:17:03 UTC", "version" : 3 } ], "name" : "example.apigee.net.crt" }
Puoi visualizzare queste informazioni anche nell'interfaccia utente di gestione perimetrale:
- Accedi all'interfaccia utente di gestione di Edge all'indirizzo https://enterprise.apigee.com (cloud) o
http://<ms-ip>:9000
(on-premise), dove<ms-ip>
è l'indirizzo IP del nodo del server di gestione. - Nel menu dell'interfaccia utente di gestione di Edge, seleziona Amministrazione > Certificati TLS.
Nell'interfaccia utente di Edge, puoi specificare con quanto anticipo Edge indica che un certificato sta per scadere. Per impostazione predefinita, l'interfaccia utente evidenzia i certificati in scadenza nei prossimi 10 giorni.
Crea un archivio chiavi
Un archivio chiavi è specifico per un ambiente nella tua organizzazione, ad esempio il set di dati completamente gestito di Google Cloud. Pertanto, se vuoi testare il keystore in un ambiente di test prima di eseguirlo nel tuo ambiente di produzione, devi crearlo in entrambi gli ambienti.
La creazione di un archivio chiavi è un processo in due fasi:
- Crea un file JAR contenente il certificato e la chiave privata.
- Creare l'archivio chiavi e caricare il file JAR.
Crea un file JAR contenente il certificato e la chiave privata
Crea un file JAR con la chiave privata, il certificato e un manifest. Il file JAR deve contenere i seguenti file e directory:
/META-INF/descriptor.properties myCert.pem myKey.pem
Nella directory contenente la coppia di chiavi e il certificato, crea una directory denominata
/META-INF
. Quindi, crea un file
chiamato descriptor.properties
in
/META-INF
con quanto segue
contenuti:
certFile={myCertificate}.pem keyFile={myKey}.pem
Genera il file JAR contenente la coppia di chiavi e il certificato:
jar -cf myKeystore.jar myCert.pem myKey.pem
Aggiungi descriptor.properties al file JAR:
jar -uf myKeystore.jar META-INF/descriptor.properties
Crea l'archivio chiavi e carica il file JAR
Per creare un archivio chiavi in un ambiente, devi solo specificare il nome dell'archivio chiavi all'API Crea un archivio chiavi o un archivio attendibile. Il nome può contenere solo caratteri alfanumerici:
curl -X POST -H "Content-Type: text/xml" \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -d '<KeyStore name="myKeystore"/>' -u email:password
Risposta di esempio:
{ "certs" : [ ], "keys" : [ ], "name" : "myKeystore" }
Dopo aver creato un archivio chiavi denominato in un ambiente, puoi caricare i file JAR contengono un certificato e una chiave privata utilizzando Carica un file JAR in un'API Keystore:
curl -X POST -H "Content-Type: multipart/form-data" \ -F file="@myKeystore.jar" -F password={key_pass} \ "https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/{myKeystore}/keys?alias={key_alias}" \ -u email:password
dove l'opzione -F
specifica
il percorso del file JAR.
In questa chiamata, specifichi due parametri di query:
alias
- Identifica il e la chiave nell'archivio chiavi. Quando crei un host virtuale, fai riferimento al certificato e alla chiave tramite il nome dell'alias.password
: la password per la chiave privata. Ometti questo parametro se la chiave privata non ha password.
Verifica che il keystore sia stato caricato correttamente:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystore \ -u email:password
Esempio di risposta:
{ "certs" : [ "myCertificate" ], "keys" : [ "myKey" ], "name" : "myKeystore" }
Crea un truststore
Le API utilizzate per creare un truststore sono le stesse utilizzate per creare un keystore. La l'unica differenza è che passi il file del certificato come file PEM anziché come file JAR.
Se il certificato fa parte di una catena, devi caricare tutti i certificati della catena singolarmente
nel truststore o creare un singolo file contenente tutti i certificati, includendo una nuova riga tra
ogni certificato nel file. Il certificato finale è in genere firmato dall'emittente del certificato. Ad esempio, nel truststore carichi un certificato client, client_cert_1
, e il certificato dell'emittente del certificato client, ca_cert
.
Durante l'autenticazione TLS a due vie, l'autenticazione client ha esito positivo quando il server invia
client_cert_1
al cliente come
parte del processo di handshake TLS.
In alternativa, hai un secondo certificato, client_cert_2
, firmato dallo stesso certificato.
ca_cert
. Tuttavia, non caricare client_cert_2
nel truststore. Il truststore contiene ancora client_cert_1
e ca_cert
.
Quando il server supera client_cert_2
come parte dell'handshake TLS,
richiesta approvata. Questo accade perché Edge consente il completamento della verifica TLS quando client_cert_2
non esiste nel truststore, ma è stato firmato da un certificato esistente nel truststore. Se rimuovi il certificato CA ca_cert
dal truststore, la verifica TLS non va a buon fine.
Crea un truststore vuoto nell'ambiente utilizzando Crea un archivio chiavi o un truststore, la stessa API utilizzata per creare un archivio chiavi:
curl -X POST -H "Content-Type: text/xml" -d \ '<KeyStore name="myTruststore"/>' \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
Carica il certificato come file PEM nel truststore utilizzando l'API Carica un certificato in un truststore:
curl -X POST -H "Content-Type: multipart/form-data" -F file="@trust.pem" \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myTruststore/certs?alias=myTruststore \ -u email:password
dove l'opzione -F
specifica
del file PEM.
Eliminare un keystore o un truststore
Puoi eliminare un archivio chiavi o un archivio attendibilità utilizzando la funzione Elimina un'API Keystore o Truststore:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystoreName \ -u email:password
Risposta di esempio:
{ "certs" : [ ], "keys" : [ ], "name" : "myKeystoreName" }
Se elimini un archivio chiavi o un archivio attendibilità utilizzato da un host virtuale o da una destinazione endpoint/target/server, tutte le chiamate API tramite l'host virtuale o l'endpoint/server di destinazione non riuscirà...