Crea almacenes de claves y almacenes de confianza mediante la API de Edge Management

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

En este documento, se describe cómo crear, modificar y borrar almacenes de claves y almacenes de confianza para Edge para la nube y perimetral para las versiones 4.18.01 y posteriores de la nube privada.

Introducción

Para configurar una funcionalidad que se basa en una infraestructura de clave pública, como TLS, debes hacer lo siguiente: crear almacenes de claves y almacenes de confianza que proporcionen las claves y los certificados digitales necesarios.

Para obtener una introducción a los almacenes de claves, los almacenes de confianza y los alias, consulta almacenes de claves y almacenes de confianza.

Crea un almacén de claves

Un almacén de claves es específico para un entorno de tu organización, como los de prueba o producción. en un entorno de nube. Por lo tanto, si quieres probar el almacén de claves en un entorno de pruebas antes de implementarlo a tu entorno de producción, debes crearlo en ambos.

Para crear un almacén de claves en un entorno, haz lo siguiente:

  1. Usa la llamada a la API de esta sección para crear el almacén de claves.
  2. Crea un alias y sube un par de certificado/claves al alias. La forma en que subes el certificado y se basa en el formato del par certificado/clave. En las siguientes secciones, se describe cómo subir cada tipo de par de certificado/clave:

Para crear un almacén de claves, especifica su nombre en Crear un Keystore o Truststore. El nombre del almacén de claves solo puede contener caracteres alfanuméricos:

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"/>'

Respuesta de muestra:

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

Sube un certificado y una clave como un archivo JAR

Primero debes crear un archivo JAR con tu clave privada, certificado y un manifiesto. El archivo JAR debe contener los siguientes archivos y directorios:

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

El JAR de un almacén de claves puede contener solo esos tres archivos. Si tienes una cadena de certificados, todos los certificados de la cadena se deben agregar a un solo archivo PEM, en el que se debe firmar el último certificado por una AC raíz. Los certificados se deben anexar al archivo PEM en el orden correcto. con una línea vacía entre cada certificado, lo que significa que

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

En el directorio que contiene el par de claves y el certificado, crea un directorio llamado /META-INF Luego, crea un archivo llamado descriptor.properties /META-INF con el siguiente contenido:

certFile={myCertificate}.pem
keyFile={myKey}.pem

Genera el archivo JAR que contiene tu par de claves y el certificado:

jar -cf myKeystore.jar myCert.pem myKey.pem

Agregar descriptor.properties a tu archivo JAR:

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

Ahora puedes subir tus archivos JAR que contienen un certificado y una clave privada mediante el Crea un alias a partir de una API de archivo 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"

donde la opción -F especifica la ruta de acceso al archivo JAR.

En esta llamada, especificas lo siguiente:

  • alias_name: Identifica el certificado y la clave en el almacén de claves. Cuando creas un host virtual, haces referencia al certificado y la clave mediante su alias.
  • key_pword: Es la contraseña de la clave privada. Omitir este parámetro si la clave privada no tiene contraseña.

Verifica que el almacén de claves se haya subido correctamente:

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

Respuesta de muestra:

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

Sube un certificado y una clave como archivos PEM

Sube archivos PEM que contengan un certificado y una clave privada mediante el archivo Crea un alias a partir de la API de certificados y archivos PEM de claves:

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"

donde la opción -F especifica las rutas a los archivos PEM.

En esta llamada, especificas lo siguiente:

  • alias_name: Identifica el certificado y la clave en el almacén de claves. Cuando creas un host virtual, haces referencia al certificado y la clave mediante su alias.
  • key_pword: Es la contraseña de la clave privada. Omitir este parámetro si la clave privada no tiene contraseña.

Verifica que el almacén de claves se haya subido correctamente:

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

Respuesta de muestra:

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

Sube un certificado y una clave como PKCS12/PFX archivo

Sube un archivo PKCS12/PFX que contenga un certificado y una clave privada mediante el Crea un alias a partir de una API de archivo 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"

En el ejemplo anterior, la opción -F especifica la ruta de acceso al archivo P12.

En esta llamada, especificas lo siguiente:

  • alias_name: Identifica el certificado y la clave en el almacén de claves. Cuando creas un host virtual, haces referencia al certificado y la clave mediante su alias.
  • key_pword: Es la contraseña de la clave privada. Omitir este parámetro si la clave privada no tiene contraseña.

Verifica que el almacén de claves se haya subido correctamente:

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

Respuesta de muestra:

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

Crear y subir un certificado autofirmado y tecla

Puedes utilizar la Crea un alias generando una API de certificado autofirmado para crear un certificado autofirmado. clave y subirlas a un alias. La siguiente llamada especifica solo la información necesaria para crea el certificado autofirmado. Puedes modificar esta llamada para agregar información adicional:

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 respuesta debería aparecer de la siguiente manera:

{
  "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 almacén de confianza

Las APIs que usas para crear un almacén de confianza son las mismas que se usan para crear un almacén de claves. El La única diferencia es que solo subes un archivo de certificado, como archivo PEM, al almacén de confianza.

Si el certificado es parte de una cadena, debes subir todos los certificados de esta por separado al almacén de confianza, o crea un solo archivo que contenga todos los certificados. Debes insertar un campo línea entre cada certificado del archivo.

Si deseas subir varios certificados autofirmados que no formen parte de una cadena, usa el Usa la misma técnica: si hay varios certificados en los que quieres confiar, súbelos en un solo archivo.

Por lo general, el certificado final está firmado por el emisor del certificado. Por ejemplo, en la de confianza, subes un certificado de cliente,client_cert_1, y la entidad emisora del certificado de cliente certificado, ca_cert.

Durante la autenticación TLS bidireccional, la autenticación del cliente se realiza de forma correcta cuando el servidor envía client_cert_1 al cliente como parte del proceso de protocolo de enlace TLS.

Como alternativa, tienes un segundo certificado, client_cert_2, firmado por el mismo certificado, ca_cert. Sin embargo, no subes client_cert_2 al almacén de confianza. El almacén de confianza aún contiene client_cert_1 y ca_cert.

Cuando el servidor pasa client_cert_2 como parte del protocolo de enlace TLS, la solicitud se realiza de forma correcta. Este es porque Edge permite que la verificación de TLS se realice correctamente cuando client_cert_2 no existe en el de confianza, pero que firmó un certificado que existe en él. Si quitas la AC, sucederá lo siguiente: certificado, ca_cert, del almacén de confianza, se produce un error en la verificación de TLS.

Crea un almacén de confianza vacío en el entorno mediante Crear un Keystore o Truststore, que es la misma API que usas para crear un almacén de claves:

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

Después de crear el almacén de confianza, sube el certificado como un archivo PEM al almacén. Para ello, haz lo siguiente: mediante el Crea un alias a partir de una API de archivo PEM de certificado:

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"

donde la opción -F especifica la ruta de acceso al archivo PEM.

Obtener detalles sobre un almacén de claves o almacén de confianza

Busca en tu entorno si hay almacenes de claves existentes con la opción Enumerar almacenes de claves and Truststores:

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

Para los clientes de Cloud, se proporciona un almacén de claves predeterminado para las organizaciones de prueba gratuita los entornos de producción y prueba. Deberías ver los siguientes resultados de esta llamada para ambos entornos:

[ "freetrial" ]

Puedes usar este almacén de claves predeterminado para probar tus APIs y enviarlas a producción, pero por lo general, crea tu propio almacén de claves, con tu propio certificado y clave, antes de implementar producción.

Para los clientes de la nube privada, el array que se devuelve estará vacío hasta que crees tu primer el almacén de claves.

Comprueba el contenido del almacén de claves a través de la Obtén una API de almacén de claves o de almacén de confianza. Para un cliente de la nube, deberías ver TLS de un solo servidor certificado predeterminado que Apigee Edge proporciona para las cuentas de prueba gratuita.

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

La respuesta debería aparecer de la siguiente manera:

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

Obtén detalles sobre un alias

Para obtener una lista de todos los alias de un almacén de claves, usa API de List alias:

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

La respuesta debería aparecer de la siguiente manera:

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

Para obtener toda la información sobre un alias, como la fecha de vencimiento y la entidad emisora, utiliza el Get alias y especifica el nombre del 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 respuesta debería aparecer de la siguiente manera:

{
  "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"
}

Para descargar el certificado de un alias, utiliza la Exporta un certificado para una API de 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 respuesta debería aparecer de la siguiente manera:

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

Si tienes una certificación vencida y quieres renovarla, puedes descargar la firma de un certificado. Solicitud (CSR). Luego, envía la CSR a tu AC para obtener un certificado nuevo. Para generar una CSR para un alias, utiliza el Genera una CSR para una API de 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 respuesta debería aparecer de la siguiente manera:

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

Agrega un certificado a un almacén de confianza para TLS bidireccional

Cuando se usa TLS bidireccional para conexiones entrantes, es decir, una solicitud a la API en Edge, El almacén de confianza contiene un certificado o una cadena de AC para cada cliente con permiso para realizar solicitudes a Edge.

Cuando configuras inicialmente el almacén de confianza, puedes agregar todos los certificados para los clientes conocidos. Sin embargo, con el tiempo, es posible que desees agregar certificados adicionales al almacén de confianza a medida que agregues clientes nuevos.

Para agregar certificados nuevos a un almacén de confianza que se usa para TLS bidireccional, sigue estos pasos:

  1. Asegúrate de usar una referencia al almacén de confianza en el host virtual.
  2. Sube un certificado nuevo al almacén de confianza como se describió anteriormente en Crea un almacén de confianza.
  3. Actualiza la referencia del almacén de confianza para establecerla en el mismo valor. Esta actualización hace que Edge vuelva a cargar el almacén de confianza y el certificado nuevo.

    Consulta Modifica una referencia para obtener más información.

Borra un almacén de claves, un almacén de confianza o un alias.

Debes tener cuidado cuando borres un almacén de claves, un almacén de confianza o un alias. Si borras un almacén de claves, almacén de confianza, o alias, que utiliza un host virtual, un extremo o un servidor de destino, todos Fallarán las llamadas a la API a través del host virtual o del extremo o servidor de destino.

Por lo general, el proceso que usas para borrar un almacén de claves, un almacén de confianza o un alias es el siguiente:

  1. Crea un nuevo almacén de claves, almacén de confianza o alias como se describió anteriormente.
  2. Para las conexiones entrantes, es decir, una solicitud de la API a Edge, actualiza el configuración del host virtual para hacer referencia al nuevo almacén de claves y al alias de clave.
  3. Para conexiones salientes, es decir, de Apigee a un servidor de backend:
    1. Actualizar la configuración de TargetEndpoint para cualquier proxy de API que hiciera referencia a la antigua Almacén de claves y alias de clave para hacer referencia al nuevo Almacén de claves y alias de clave. Si tu TargetEndpoint hace referencia a un TargetServer, actualiza la definición de TargetServer para hacer referencia al nuevo almacén de claves. y alias de clave.
    2. Si se hace referencia al almacén de claves y al almacén de confianza directamente desde el TargetEndpoint del servicio, debes volver a implementar el proxy. Si el TargetEndpoint hace referencia a un la definición de TargetServer y la definición de TargetServer hace referencia al almacén de claves y de un almacén de confianza, no es necesario reimplementar el proxy.
    3. Confirma que los proxies de tu API funcionen correctamente.
    4. Borra el almacén de claves, el almacén de confianza o el alias.

Consulta Actualiza el certificado en un alias para obtener más información.

Borra un almacén de claves o un almacén de confianza

Puedes borrar un almacén de claves o un almacén de confianza a través de la Borra una API de almacén de claves o de almacén de confianza:

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

Si borras y vuelves a crear un almacén de claves o un almacén de confianza que usa un host virtual, las opciones debes volver a implementar los proxies de tu API.

Borra un alias

Puedes borrar un alias de un almacén de claves o almacén de confianza usando la API de 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}