Gestión y renovación de claves y certificados en OAM y STS

Introducción

Como parte de la interacción entre la Federación y el protocolo WS-Trust, OAM/OSTS debe utilizar claves y certificados PKI para evitar el repudio y la integridad mediante el uso de firmas digitales y la confidencialidad a través del cifrado digital.

En este artículo, se describe la gestión de claves y certificados, incluido cómo:

En un intercambio de federación/WS-Trust, ocurre lo siguiente:

Ejemplo de mensajes SAML con firmas digitales XML:

 <samlp:Response ...>
   <saml:Issuer>https://idp.com</saml:Issuer>
   <samlp:Status>...</samlp:Status>
   <saml:Assertion ...>
     <saml:Issuer>https://idp.com</saml:Issuer>
     <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
       <ds:SignedInfo>
         <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-excc14n#"/>
         <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsasha1"/>
         <ds:Reference URI="#idhmf9KzAhxleuJ-L3vaVr979Ffa0">
           <ds:Transforms>
             <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
             <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>           </ds:Transforms>
         <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
           <ds:DigestValue>JGvBqil/NXa6dlMOn5ZhmBbOie8=</DigestValue>
         </ds:Reference>
       </ds:SignedInfo>

 <ds:SignatureValue>VgOrU79ZJO4rzHiFTCDCGNmkb0...Y776QM4vEBBybIpbCCUih7I0aA==
 </ds:SignatureValue>
     </ds:Signature>
     <saml:Subject>
       <saml:NameID>alice@acme.com</saml:NameID>
       ...
     </saml:Subject>
     ...
     </saml:Assertion>
 </samlp:Response>

Ejemplo de mensajes SAML con firma de cadena de consulta (usado normalmente por un SP para enviar al usuario a IdP con AuthnRequest):

https://idp.com/saml20sso?SAMLRequest=hZJRT8IwFIX%2FStP3sW5BTW7YEhRREtQFplHeytZBQ9fW3i7Kv3cUTdAHfL09t985J3eEvFUV47wR68tkqjRAeMto5DYajRNC8FQi%2BguX4YQ7pgIF1xpvKKEom%2FZ7U3EujM7r13iLEsaztoDItJVPjKhEQGW24QkHJbLtTFyuuS7bbsLVcpK92OmdN8XYb9SLETsw0eq59RlOWDCOWRikrkytIhsAuV5QU3x6upa6l3pw3vD6KEO7LsoiKp2VJyYtDrEhgN1JEee%2F5YjCHbKHqC335%2BWHSZ%2B9CVIQ2ku%2Fp%2FlPaxhKG8UnRo6uLDz2i7NJYZSs9mSslPm4cYJ7kVkf%2BCdRisq2UhR0zg%2FQn9fQ%2F4F&RelayState=id-mAK1whfUGrvoLqqhU2ysXLWSIw-&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=S5TZ0uwK9SMZUgBfDaipbNhlLqbbSG9t4rgA9n3%2FwxFsK7H66IoK6G%2BDfaIUvc5bLtTrwmxsa2iB2gjFx8pQ6%2FgH8OtFbT7mKZ7z8FihgxxTKjHJ2FQocOEn%2FrkcRKAAq%2Blig5xVSlR%2BzLq1vkQzIMNOrfLw%2FM6uk3i%2Fk

SAMLRequest: mensaje AuthnRequest de SAML

RelayState: parámetro de estado de retransmisión de SAML 2.0

SigAlg: algoritmo de firma

Signature: bytes de firma que cubren los parámetros SAMLRequest, RelayState y SigAlg

Los certificados y las claves de PKI de OAM/OSTS se almacenan en el archivo del almacén de claves Java $DOMAIN_HOME/config/fmwconfig/.oamkeystore (Nota: Este almacén de claves es del tipo JCEKS, no JKS), y la configuración de OAM/OSTS hace referencia a las entradas de clave de .oamkeystore, para que los componentes puedan utilizarlas para operaciones de SAML.

Instalar

Durante la fase de instalación de OAM, se genera un par de claves y un certificado autofirmado, y OAM/OSTS se configura para utilizarlo para las operaciones de firma y descifrado.

Configuración de nuevas entradas de clave

El proceso de creación de nuevas claves y certificados PKI antes de usarlas en OAM/OSTS es doble:

Nota: Las claves y los certificados se deben almacenar en .oamkeystore; no se admite HSM.

Creación de una nueva entrada de clave en .oamkeystore

Como se mencionó anteriormente, la contraseña del almacén de claves .oamkeystore es desconocida para el administrador y se debe restablecer para realizar modificaciones. Esta operación se realiza mediante un comando WLST:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

  4. Restablezca la contraseña de .oamkeystore: resetKeystorePassword().

  5. Salga del entorno WLST: exit().

Una forma de crear una nueva entrada de clave en .oamkeystore es utilizar la aplicación KeyTool de JDK. En este ejemplo, se crean dos entradas de clave con certificados autofirmados, una con el samlsigning de alias y la otra con el samlencryption de alias (sustituya $JDK_HOME y $DOMAIN_HOME por la ruta de acceso correcta; para la contraseña del almacén de claves, introduzca la seleccionada durante la operación de restablecimiento):

$JDK_HOME/bin/keytool -genkeypair -alias samlsigning -keyalg RSA -keysize 2048-sigalg sha1withrsa -dname cn="ACME SAML Signing" -validity 1000 -keystore $DOMAIN_HOME/config/fmwconfig/.oamkeystore -storetype JCEKS
$JDK_HOME/bin/keytool -genkeypair -alias samlencryption -keyalg RSA -keysize 2048 -sigalg sha1withrsa -dname cn="ACME SAML Encryption" -validity 1000-keystore $DOMAIN_HOME/config/fmwconfig/.oamkeystore -storetype JCEKS

Actualizando configuración de OAM/OSTS

Una vez creadas las entradas de clave en el .oamkeystore, se deben crear nuevas entradas de clave SAML en OAM/OSTS para poder utilizarlas durante los intercambios del protocolo SAML.

Para crear una nueva entrada de clave de SAML en OAM/OSTS:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Vaya a Configuración, Configuración de Federación o Configuración del Servicio de Token de Seguridad.

  3. Crear una nueva entrada:

    1. En la sección Keystore (Almacén de claves), haga clic en el botón "+".

    2. Introduzca KeyID para la nueva entrada (por ejemplo, saml-signing).

    3. Seleccione el alias para la nueva entrada de clave en la lista desplegable que muestra las entradas de clave en .oamkeystore (por ejemplo, samlsigning).

    4. Introduzca la contraseña para la entrada de clave definida al crear la clave en la sección anterior.

    5. Repita el proceso para otras entradas, si es necesario.

  4. Haga clic en Aplicar.

Descripción de la ilustración Federation_Settings.jpg

Nota: Los distintos ID de clave pueden hacer referencia a la misma entrada de clave en el almacén de claves de OAM

Uso de nuevas entradas de clave

Configuración global

Para actualizar la configuración global de OAM para utilizar nuevas claves y certificados para firmar y descifrar mensajes SAML, realice las siguientes operaciones:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-admin-port/oamconsole.

  2. Vaya a Configuración, Configuración de federación.

  3. Seleccione la clave de firma en la lista desplegable de entradas de clave (estas entradas se definen en la sección Almacén de claves). Por ejemplo, seleccione saml-signing.

  4. Seleccione la clave de cifrado en la lista desplegable de entradas de clave (estas entradas se definen en la sección Almacén de claves). Por ejemplo, seleccione saml-encryption.

  5. Haga clic en Aplicar.

Nota: después de la aplicación, puede que necesite redistribuir certificados y/o metadatos de SAML 2.0 a los partners.

Descripción de la ilustración Global_Settings.jpg

Para actualizar la configuración global de OSTS para utilizar nuevas claves y certificados para descifrar mensajes SAML, realice las siguientes operaciones:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Vaya a Configuración, Configuración del Servicio de Token de Seguridad.

  3. Seleccione Default Encryption Template de la lista desplegable de entradas de clave (estas entradas se definen en la sección Keystore). Por ejemplo, seleccione samlencryption.

  4. Haga clic en Aplicar.

Nota: Después de la aplicación, es posible que necesite redistribuir certificados a los partners.

Descripción de la ilustración Security_Token_Service_Settings.jpg

Para actualizar la configuración de OSTS para utilizar nuevas claves y certificados para firmar mensajes SAML, realice las siguientes operaciones:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Navegue hasta Servicio de token de seguridad, Plantillas de emisión de token.

  3. Haga clic en la plantilla de emisión de SAML que desea actualizar.

  4. Haga clic en el separador Seguridad.

  5. Seleccione ID de plantilla de acceso de almacén de claves de firma en la lista desplegable de entradas de clave (estas entradas se definen en la sección Almacén de claves). Por ejemplo, seleccione saml-signing.

  6. Haga clic en Aplicar.

Nota: Después de la aplicación, es posible que necesite redistribuir certificados a los partners.

Descripción de la ilustración Issuance_Template.jpg

Renovación de claves por socio

Cuando un despliegue de OAM/OSTS está relacionado con numerosos partners, puede resultar difícil cambiar las claves/certificados de firma/cifrado globales a la vez, ya que para ello es necesario notificar a todos los partners al mismo tiempo los cambios y hacer que actualicen su configuración con los nuevos certificados/metadatos de SAML 2.0.

Nota: Después de actualizar las claves/certificados en OAM/OSTS, los flujos de federación/WS-Trust no funcionarán con los partners hasta que carguen los nuevos certificados en su sistema.

OAM/OSTS proporciona una forma sencilla de realizar una renovación de claves por socio, lo que permite al administrador de OAM planificar cómo y cuándo notificar a socios específicos el cambio de la clave y los certificados.

Nota: La renovación de claves de OAM se puede realizar a través de un grupo de socios mediante perfiles de socio en la configuración de OAM.

Renovación de claves de OAM

Al realizar una renovación de clave para un partner específico, primero debe actualizar la configuración del partner de SP o IdP en OAM mediante un comando WLST:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

  4. Actualice la configuración del partner para definir la propiedad Clave de firma (a la que se hace referencia en signingkeystoreaccesstemplateid) en el ID de entrada de clave definido en la sección Configuración de federación, Almacén de claves (en este ejemplo, saml-signing es el ID de entrada de clave; sustituya <PARTNER_NAME> por el nombre del partner en OAM; sustituya <IDP_OR_SP> por IDP o SP, el tipo de partner):

  5. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
    
  6. Actualice la configuración del partner para definir la propiedad Clave de Cifrado (a la que se hace referencia en encryptionkeystoreaccesstemplateid) en el ID de entrada de clave definido en la sección Configuración de Federación, Almacén de Claves (en este ejemplo, saml-encryption es el ID de entrada de clave; sustituya <PARTNER_NAME> por el nombre del partner en OAM; sustituya <IDP_OR_SP> por IDP o SP, el tipo de partner):
  7. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
    
  8. Salga del entorno WLST: exit().

Una vez actualizada la configuración del partner, este debe utilizar los metadatos de SAML 2.0 o la información del certificado. Para generar esta información:

Un ejemplo es: http://oam.com/oamfed/idp/cert?id=saml-signing

Nota: Primero puede generar los metadatos/certificados de SAML 2.0 y proporcionarlos al partner antes de actualizar la configuración del partner.

Renovación de claves de OSTS

Para explicar la renovación de claves de OSTS, realice un ejemplo de lo siguiente:

La renovación consiste en cambiar primero RP1, luego RP2 y luego RP3 para que esos partners utilicen el nuevo certificado saml-signing.

Para cambiar RP1, se deben realizar las siguientes operaciones:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Navegue hasta Servicio de token de seguridad, Perfiles de socio y Perfiles de usuario de confianza.

  3. Cree un nuevo perfil de usuario de confianza denominado NewRPprofileA, copia de RPprofileA.

  4. Navegue hasta Servicio de token de seguridad, Plantillas de emisión de token.

  5. Cree una nueva plantilla de emisión de SAML denominada NewSAMLIssuanceA, copia de SAMLIssuanceA.

  6. Actualice NewRPprofileA para hacer referencia a la plantilla de emisión de SAML 2.0 de NewSAMLIssuanceA.

  7. Descripción de la ilustración New_RPProfile_A.jpg

  8. Actualice la plantilla de emisión de SAML 2.0 de NewSAMLIssuanceA en el separador Seguridad para utilizar la nueva entrada de clave.
  9. Descripción de la ilustración New_SAMLIssuanceA.jpg

  10. Navegue hasta Servicio de token de seguridad, Partners, Partes de confianza.

  11. Abra RP1 y configúrelo para utilizar el perfil de usuario de confianza NewRPprofileA: desde entonces, OSTS utiliza la nueva entrada de clave saml-signing para firmar las afirmaciones de SAML 2.0 salientes para el partner de usuario de confianza RP1.

  12. Descripción de la ilustración Configure_RP1.jpg

  13. Descargue los nuevos certificados de OSTS abriendo un explorador y utilice la siguiente URL para generar el certificado en formato PEM.
  14. http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID> (Fin de creación)

  15. El parámetro de consulta de ID contiene el ID de entrada de clave para el certificado.

  16. Sustituya <KEYENTRY_ID>.

  17. Un ejemplo es: http://oam.com/sts/servlet/samlcert?id=saml-signing

  18. Proporcione el certificado al socio.

El cambio de RP2 al nuevo certificado será más rápido, ya que el nuevo perfil de usuario de confianza y la plantilla de emisión de SAML ya se han creado.

Para cambiar RP2, se deben realizar las siguientes operaciones:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue hasta Servicio de token de seguridad, Partners, Partes de confianza.

  3. Abra RP1 y configúrelo para utilizar el perfil de usuario de confianza NewRPprofileA: desde entonces, OSTS utiliza la nueva entrada de clave saml-signing para firmar las afirmaciones de SAML 2.0 salientes para el partner de usuario de confianza RP1.

  4. Proporcione el certificado al socio.

El cambio de RP3 al nuevo certificado consiste en repetir las operaciones ejecutadas para RP1, ya que el nuevo perfil de usuario de confianza y la plantilla de emisión de SAML para RP3 no se han creado aún.

Nota: Primero puede proporcionar el nuevo certificado al partner antes de actualizar la configuración de OSTS.

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.