Creazione di archivi chiavi e truststore mediante l'API Edge Management

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Questo documento descrive come creare, modificare ed eliminare archivi chiavi e archivi attendibili per Edge per il cloud e per Edge per il cloud privato versioni 4.18.01 e successive.

di Gemini Advanced.

Introduzione

Per configurare la funzionalità che si basa su un'infrastruttura a chiave pubblica, come TLS, è necessario e creare archivi chiavi e archivi attendibili che forniscano le chiavi e i certificati digitali necessari.

Per un'introduzione ad archivi chiavi, truststore e alias, consulta Keystore e truststore.

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 l'archivio chiavi in un ambiente di test prima di eseguire il deployment, nell'ambiente di produzione, devi crearla in entrambi gli ambienti.

Per creare un archivio chiavi in un ambiente:

  1. Usa la chiamata API in questa sezione per creare l'archivio chiavi.
  2. Crea un alias e carica una coppia certificato/chiave nell'alias. Il modo in cui carichi il certificato si basa sul formato della coppia certificato/chiave. Le seguenti sezioni descrivono come eseguire il caricamento ogni tipo di coppia certificato/chiave:

Per creare un archivio chiavi, specifica il nome dell'archivio chiavi nel campo Crea un API Keystore o Truststore. Il nome dell'archivio chiavi può contenere solo caratteri alfanumerici:

curl -X POST -u orgAdminEmail:password -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>'

Esempio di risposta:

{
  "certs" : [ ],
  "keys" : [ ],
  "name" : "myKeystore"
}

Carica un certificato e una chiave come file JAR

Devi prima creare un file JAR con la chiave privata, il certificato e un manifest. Lo JAR il file deve contenere i file e le directory seguenti:

/META-INF/descriptor.properties
myCert.pem
myKey.pem

Un JAR dell'archivio chiavi può contenere solo questi tre file. Se hai una catena di certificati, tutti i certificati della catena deve essere aggiunto in un unico file PEM, dove deve essere firmato l'ultimo certificato. da una CA radice. I certificati devono essere aggiunti al file PEM nell'ordine corretto, con una riga vuota tra ogni certificato, il che significa:

cert -> intermediate cert(1) -> intermediate cert(2) -> … -> root

Nella directory contenente la coppia di chiavi e il certificato, crea una directory denominata /META-INF. Quindi, crea un file denominato descriptor.properties in /META-INF con i seguenti 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 a il file JAR:

jar -uf myKeystore.jar META-INF/descriptor.properties

Ora puoi caricare i file JAR che contengono un certificato e una chiave privata utilizzando il Crea un alias da un'API di file JAR o PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F file="@myKeystore.jar" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertjar"

dove l'opzione -F specifica il percorso del file JAR.

In questa chiamata specifichi:

  • alias_name - Identifica il certificato e la chiave in l'archivio chiavi. Quando crei un host virtuale, fai riferimento al certificato e alla chiave tramite nome alias.
  • key_pword: la password della chiave privata. Ometti questo parametro se la chiave privata non ha password.

Verifica che l'archivio chiavi sia stato caricato correttamente:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Esempio di risposta:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Carica un certificato e una chiave come file PEM

Carica i file PEM che contengono un certificato e una chiave privata utilizzando il Crea un alias dall'API del certificato e dei file PEM chiave:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F keyFile="@server.key" -F certFile="@signed.crt" \
-F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertfile"

in cui l'opzione -F specifica i percorsi dei file PEM.

In questa chiamata specifichi:

  • alias_name - Identifica il certificato e la chiave in l'archivio chiavi. Quando crei un host virtuale, fai riferimento al certificato e alla chiave tramite nome alias.
  • key_pword: la password della chiave privata. Ometti questo parametro se la chiave privata non ha password.

Verifica che l'archivio chiavi sia stato caricato correttamente:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Esempio di risposta:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Carica un certificato e una chiave come PKCS12/PFX file

Carica un file PKCS12/PFX contenente un certificato e una chiave privata utilizzando il Crea un alias da un'API di file JAR o PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.p12" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=pkcs12"

in cui l'opzione -F specifica il percorso del file P12.

In questa chiamata specifichi:

  • alias_name - Identifica il certificato e la chiave in l'archivio chiavi. Quando crei un host virtuale, fai riferimento al certificato e alla chiave tramite nome alias.
  • key_pword: la password della chiave privata. Ometti questo parametro se la chiave privata non ha password.

Verifica che l'archivio chiavi sia stato caricato correttamente:

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}

Esempio di risposta:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

Creare e caricare un certificato autofirmato e chiave

Puoi utilizzare lo Crea un alias generando un'API autofirmata per creare un certificato autofirmato e e caricarle su un alias. La seguente chiamata specifica solo le informazioni richieste per creare il certificato autofirmato. Puoi modificare questa chiamata per aggiungere ulteriori informazioni:

curl -u orgAdminEmail:password -X POST --header "Content-Type: application/json"  \
-d "{
    "alias": "selfsigned",
    "subject": {
        "commonName": "mycert"
    }
}" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?format=selfsignedcert"

La risposta dovrebbe apparire come:

{
  "alias": "selfsigned",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:FALSE",
        "expiryDate": 1491497204000,
        "isValid": "Yes",
        "issuer": "CN=mycert",
        "publicKey": "RSA Public Key, 2048 bits",
        "serialNumber": "00:d1:b4:78:e1",
        "sigAlgName": "SHA256withRSA",
        "subject": "CN=mycert",
        "subjectAlternativeNames": [],
        "validFrom": 1459961204000,
        "version": 3
      }
    ],
    "certName": "selfsigned-cert"
  },
  "keyName": "selfsigned"
}

Crea un archivio attendibilità

Le API che utilizzi per creare un archivio attendibili sono le stesse che utilizzi per creare un archivio chiavi. La l'unica differenza è che carichi solo un file di certificazione, come file PEM, nel truststore.

Se un certificato fa parte di una catena, devi caricare tutti i certificati della catena separatamente. al truststore o di creare un unico file contenente tutti i certificati. Devi inserire un campo vuoto riga tra ogni certificato nel file.

Se vuoi caricare più certificati autofirmati che non fanno parte di una catena, utilizza la stessa tecnica: se ci sono più certificati che vuoi considerare attendibili, caricali in un unico file.

In genere il certificato finale è firmato dall'emittente del certificato. Ad esempio, nel archivio attendibilità, carichi un certificato client,client_cert_1, e l'emittente del certificato client certificato, ca_cert.

Durante l'autenticazione TLS a due vie, l'autenticazione client ha esito positivo quando il server invia client_cert_1 al client come parte del processo di handshake TLS.

In alternativa, hai un secondo certificato, client_cert_2, firmato dallo stesso certificato, ca_cert. Tuttavia, non si carica client_cert_2 nell'archivio attendibilità. L'archivio attendibilità contiene ancora client_cert_1 e ca_cert.

Quando il server supera client_cert_2 come parte dell'handshake TLS, la richiesta ha esito positivo. Questo è poiché Edge consente il completamento della verifica TLS quando client_cert_2 non esiste nel archivio attendibilità ma è stato firmato da un certificato esistente nel truststore. Se rimuovi l'autorità di certificazione certificato, ca_cert, dal truststore, la verifica TLS non va a buon fine.

Crea un archivio attendibilità vuoto nell'ambiente utilizzando Crea un Archivio chiavi o Truststore, la stessa API che utilizzi per creare un archivio chiavi:

curl -u orgAdminEmail:password -X POST -H "Content-Type: text/xml" \
-d '<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Dopo aver creato l'archivio di attendibilità, carica il certificato come file PEM nell'archivio di attendibilità utilizzando Crea un alias da un file PEM di un certificato:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F certFile="@cert.pem" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myTruststore/aliases?alias=myTruststore&format=keycertfile"

in cui l'opzione -F specifica il percorso del file PEM.

Ottenere dettagli su un modello esistente un archivio chiavi o un archivio attendibili

Verifica la presenza di archivi chiavi esistenti nell'ambiente utilizzando la funzione Elenca archivi chiavi e Truststores:

curl -u orgAdminEmail:password -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

Per i clienti cloud, viene fornito un archivio chiavi predefinito per le organizzazioni di prova senza costi sia nel ambienti di test e produzione. Dovresti vedere i seguenti risultati per questa chiamata ambienti:

[ "freetrial" ]

Puoi usare questo archivio chiavi predefinito per testare le tue API ed eseguirne il push in produzione, in genere crea il tuo archivio chiavi, con il tuo certificato e la tua chiave, prima del deployment e produzione.

Per i clienti del cloud privato, l'array restituito è vuoto finché non crei il primo un archivio chiavi.

Controlla i contenuti dell'archivio chiavi utilizzando la funzione Ottieni un'API Keystore o Truststore. Per un cliente cloud, dovresti vedere un singolo server TLS il certificato predefinito fornito da Apigee Edge per gli account di prova senza costi.

curl -u orgAdminEmail:password -X GET\
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/freetrial

La risposta dovrebbe apparire come:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

Visualizzare i dettagli su un alias

Ottieni un elenco di tutti gli alias per un archivio chiavi utilizzando la API Lista alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases"

La risposta dovrebbe apparire come:

[
  "alias1",
  "alias2",
  "alias3",
]

Per ottenere tutte le informazioni relative a un alias, ad esempio data di scadenza e emittente, utilizza Ottieni l'API alias e specifica il nome dell'alias:

curl  -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}"

La risposta dovrebbe apparire come:

{
  "alias": "alias1",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:TRUE",
        "expiryDate": 1459371335000,
        "isValid": "No",
        "issuer": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "publicKey": "RSA Public Key, 1024 bits",
        "serialNumber": "00:86:a0:9b:5b:91:a9:fe:92",
        "sigAlgName": "SHA256withRSA",
        "subject": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "subjectAlternativeNames": [],
        "validFrom": 1456779335000,
        "version": 3
      }
    ],
    "certName": "new\-cert"
  },
  "keyName": "newssl20"
}

Per scaricare il certificato per un alias, utilizza la API per esportare un certificato per un alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/e/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/certificate"

La risposta dovrebbe apparire come:

-----BEGIN CERTIFICATE-----
MIIDojCCAwugAwIBAgIJAIagm1uRqf6SMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
...
RBUkaTe/570sLHY0tvkIm5tEX36ESw==
-----END CERTIFICATE-----

Se hai un certificato scaduto e vuoi rinnovarlo, puoi scaricarne uno di firma Richiesta (CSR). Dovrai quindi inviare il CSR alla tua CA per ottenere un nuovo certificato. Per generare un CSR per un , utilizza API Genera una richiesta CSR per un alias:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/csr"

La risposta dovrebbe apparire come:

-----BEGIN CERTIFICATE REQUEST-----
MIIB1DCCAT0CAQAwgZMxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRl
...
RF5RMytbkxkvPxIE17mDKJH0d8aekv/iEOItZ+BtQg+EibMUkkjTzQ==
-----END CERTIFICATE REQUEST-----

Aggiungi un certificato a un truststore per il TLS bidirezionale

Quando utilizzi TLS a due vie per le connessioni in entrata, ovvero una richiesta API in Edge, l'archivio attendibilità contiene un certificato o una catena CA per ogni client autorizzato a effettuare richieste a Edge.

Quando configuri inizialmente il truststore, puoi aggiungere tutti i certificati per i client noti. Tuttavia, nel tempo potresti voler aggiungere altri certificati al truststore man mano che aggiungi nuovi client.

Per aggiungere nuovi certificati a un truststore utilizzato per TLS bidirezionale:

  1. Assicurati di utilizzare un riferimento al truststore nell'host virtuale.
  2. Caricare un nuovo certificato nel truststore come descritto sopra in Crea un archivio attendibilità.
  3. Aggiorna il riferimento del truststore per impostarlo sullo stesso valore. Con questo aggiornamento, Edge ricarica l'archivio attendibilità e il nuovo certificato.

    Per saperne di più, consulta Modifica di un riferimento.

Elimina un archivio chiavi/un archivio attendibilità o un alias

Presta attenzione quando elimini un archivio chiavi/truststore o un alias. Se elimini un archivio chiavi, un archivio attendibilità o un alias utilizzato da un host virtuale, da un endpoint di destinazione o da un server di destinazione, Le chiamate API tramite l'host virtuale o l'endpoint/il server di destinazione non riusciranno.

In genere, la procedura utilizzata per eliminare un archivio chiavi/truststore o un alias è la seguente:

  1. Crea un nuovo archivio chiavi/truststore o alias come descritto sopra.
  2. Per le connessioni in entrata, ovvero una richiesta API in Edge, aggiorna configurazione dell'host virtuale per fare riferimento al nuovo archivio chiavi e all'alias della chiave.
  3. Per le connessioni in uscita, ossia da Apigee a un server di backend:
      .
    1. Aggiorna la configurazione di TargetEndpoint per tutti i proxy API che facevano riferimento al precedente un archivio chiavi e un alias di chiave per fare riferimento al nuovo archivio chiavi e all'alias della chiave. Se il tuo TargetEndpoint fa riferimento a un TargetServer, aggiorna la definizione di TargetServer per fare riferimento al nuovo archivio chiavi e alias della chiave.
    2. Se viene fatto riferimento all'archivio chiavi e all'archivio chiavi direttamente dal punto di destinazione devi eseguire nuovamente il deployment del proxy. Se TargetEndpoint fa riferimento a un la definizione di TargetServer, mentre la definizione di TargetServer fa riferimento all'archivio chiavi e truststore, non sarà necessario eseguire nuovamente il deployment del proxy.
    3. Verifica che i proxy API funzionino correttamente.
    4. Elimina l'archivio chiavi/truststore o l'alias.

Vedi Aggiorna il certificato in un alias per ulteriori informazioni.

Elimina un archivio chiavi o un archivio attendibili

Puoi eliminare un archivio chiavi o un archivio attendibilità utilizzando la funzione Elimina un'API Keystore o Truststore:

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName

Se elimini e ricrei un archivio chiavi o un archivio attendibilità utilizzato da un host virtuale: devi eseguire nuovamente il deployment dei proxy API.

Eliminare un alias

Puoi eliminare un alias in un archivio chiavi o in un archivio attendibilità utilizzando la API Delete alias:

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName/aliases/{alias_name}