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:
-
Generar nuevas claves y certificados
-
Configurar OAM y OSTS para utilizar las nuevas claves y certificados
-
Implante una renovación de claves por partner.
-
Distribuir los nuevos certificados a los partners
En un intercambio de federación/WS-Trust, ocurre lo siguiente:
-
OAM/OSTS utiliza sus propias claves y certificados PKI para realizar operaciones de firma y descifrado en los mensajes SAML
-
Firmar mensajes y afirmaciones de SAML salientes (firmas XML Digital o firmas de cadena de consulta)
-
Descifrar afirmaciones de SAML entrantes (cifrado digital XML)
-
OAM/OSTS utiliza el certificado de firma o cifrado del partner para:
-
Verificar firmas en mensajes SAML entrantes y afirmaciones (XML)
-
Cifre opcionalmente las afirmaciones de SAML salientes (cifrado XML Digital)
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.
-
El instalador de OAM crea el .oamkeystore con una contraseña aleatoria (consulte la sección "Configuración de nuevas entradas de clave" sobre cómo restablecer esa contraseña)
-
Se crea una nueva entrada de clave denominada
stsprivatekeyalias
-
Par de claves de RSA
-
Certificado auto firmado
-
Subject y Issuer definidos como:
cn=\<MACHINE_HOSTNAME\>
-
Se crean dos entradas en la configuración de OAM/OSTS:
-
osts_signing
hace referencia a la entrada de clavestsprivatekeyalias
en .oamkeystore -
osts_encryption
hace referencia a la entrada de clavestsprivatekeyalias
en .oamkeystore -
OAM está configurado para utilizar la entrada
osts_signing
para operaciones de firma yosts_encryption
para operaciones de descifrado -
OSTS está configurado para utilizar
osts_encryption
para operaciones de descifrado yosts_signing
para operaciones de firma en las plantillas de emisión de SAML
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:
-
Creación de la entrada de clave en
.oamkeystore
-
Creación de la entrada en OAM/OSTS para hacer referencia a la entrada de clave en
.oamkeystore
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:
-
Introduzca el entorno WLST ejecutando:
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Conéctese al servidor de administración de WLS:
connect()
. -
Navegue a la rama Domain Runtime:
domainRuntime()
. -
Restablezca la contraseña de .oamkeystore:
resetKeystorePassword()
. -
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Vaya a Configuración, Configuración de Federación o Configuración del Servicio de Token de Seguridad.
-
Crear una nueva entrada:
-
En la sección Keystore (Almacén de claves), haga clic en el botón "+".
-
Introduzca KeyID para la nueva entrada (por ejemplo,
saml-signing
). -
Seleccione el alias para la nueva entrada de clave en la lista desplegable que muestra las entradas de clave en .oamkeystore (por ejemplo,
samlsigning
). -
Introduzca la contraseña para la entrada de clave definida al crear la clave en la sección anterior.
-
Repita el proceso para otras entradas, si es necesario.
-
-
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-admin-port/oamconsole
. -
Vaya a Configuración, Configuración de federación.
-
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
. -
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
. -
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Vaya a Configuración, Configuración del Servicio de Token de Seguridad.
-
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
. -
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole
. -
Navegue hasta Servicio de token de seguridad, Plantillas de emisión de token.
-
Haga clic en la plantilla de emisión de SAML que desea actualizar.
-
Haga clic en el separador Seguridad.
-
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
. -
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.
-
La renovación de claves para los partners de OAM IdP o SP implica:
-
Configurar nuevas claves y certificados como se explica en la sección anterior.
-
Actualizando la configuración del partner de SP o IdP en OAM para utilizar las nuevas claves y certificados.
-
Notificar al partner los nuevos metadatos de SAML 2.0 generados específicamente con las nuevas claves/certificados o los nuevos certificados correspondientes a las nuevas entradas de clave.
-
-
La realización de una renovación de claves para los socios del partido de confianza de OSTS implica:
-
Configurar nuevas claves y certificados como se explica en la sección anterior Si aún no existe uno.
-
Creación de un nuevo perfil de usuario de confianza, que sería una copia del perfil de usuario de confianza actual utilizado por el partner de usuario de confianza.
-
Al crear una nueva plantilla de emisión de SAML, copia de la plantilla de emisión de SAML a la que hace referencia el perfil de usuario de confianza utilizado actualmente por el socio del usuario de confianza.
-
Actualice el nuevo perfil de usuario de confianza para usar la nueva plantilla de emisión de SAML en lugar del actual.
-
-
Actualice la nueva plantilla de emisión de SAML para usar los nuevos certificados/claves
-
Asignar el partner del usuario de confianza al nuevo perfil de usuario de confianza
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:
-
Introduzca el entorno WLST ejecutando:
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Conéctese al servidor de administración de WLS:
connect()
. -
Navegue a la rama Domain Runtime:
domainRuntime()
. -
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): - 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): - Salga del entorno WLST:
exit()
.
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
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:
-
Si necesita proporcionar metadatos de SAML 2.0 para la nueva clave de firma y cifrado, abra un explorador y utilice la siguiente URL para generar los metadatos
http://oam-runtime-host:oam-runtime-port/oamfed/idp/metadata?signid=<SIGN_KEYENTRY_ID>&encid=<ENC_KEYENTRY_ID>
. -
El parámetro de consulta
signid
contiene el ID de entrada de clave para el certificado de firma. -
Sustituya
<SIGN_KEYENTRY_ID>
. -
El parámetro de consulta
encid
contiene el ID de entrada de clave para el certificado de cifrado. Sustituya<SIGN_KEYENTRY_ID>
Un ejemplo es:http://oam.com/oamfed/idp/metadata?signid=saml-signing&encid=samlencryption
. -
Si necesita proporcionar el archivo de certificado para la nueva clave, abra un explorador y utilice la siguiente URL para generar el certificado en formato PEM:
http://oam-runtime-host:oam-runtime-port/oamfed/idp/cert?id=<KEYENTRY_ID>
. -
El parámetro de consulta de ID contiene el ID de entrada de clave para el certificado.
-
Sustituya
<KEYENTRY_ID>
.
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:
-
Tres socios de Relying Party: RP1, RP2 y RP3
-
Dos perfiles de usuario de confianza:
RPprofileA
yRPprofileB
, con RP1 y RP2 utilizandoRPprofileA
y RP3 utilizandoRPprofileB
-
Dos plantillas de emisión de SAML 2.0,
SAMLIssuanceA
a las que se hace referencia enRPprofileA
ySAMLIssuanceB
a las que se hace referencia enRPprofileB
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole
. -
Navegue hasta Servicio de token de seguridad, Perfiles de socio y Perfiles de usuario de confianza.
-
Cree un nuevo perfil de usuario de confianza denominado
NewRPprofileA
, copia deRPprofileA
. -
Navegue hasta Servicio de token de seguridad, Plantillas de emisión de token.
-
Cree una nueva plantilla de emisión de SAML denominada
NewSAMLIssuanceA
, copia deSAMLIssuanceA
. -
Actualice
NewRPprofileA
para hacer referencia a la plantilla de emisión de SAML 2.0 deNewSAMLIssuanceA
. - Actualice la plantilla de emisión de SAML 2.0 de
NewSAMLIssuanceA
en el separador Seguridad para utilizar la nueva entrada de clave. -
Navegue hasta Servicio de token de seguridad, Partners, Partes de confianza.
-
Abra RP1 y configúrelo para utilizar el perfil de usuario de confianza
NewRPprofileA
: desde entonces, OSTS utiliza la nueva entrada de clavesaml-signing
para firmar las afirmaciones de SAML 2.0 salientes para el partner de usuario de confianza RP1. - Descargue los nuevos certificados de OSTS abriendo un explorador y utilice la siguiente URL para generar el certificado en formato PEM.
-
El parámetro de consulta de ID contiene el ID de entrada de clave para el certificado.
-
Sustituya
<KEYENTRY_ID>
. - Proporcione el certificado al socio.
Descripción de la ilustración New_RPProfile_A.jpg
Descripción de la ilustración New_SAMLIssuanceA.jpg
Descripción de la ilustración Configure_RP1.jpg
http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>
(Fin de creación)
Un ejemplo es: http://oam.com/sts/servlet/samlcert?id=saml-signing
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:
-
Vaya a la consola de administración de OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Navegue hasta Servicio de token de seguridad, Partners, Partes de confianza.
-
Abra RP1 y configúrelo para utilizar el perfil de usuario de confianza
NewRPprofileA
: desde entonces, OSTS utiliza la nueva entrada de clavesaml-signing
para firmar las afirmaciones de SAML 2.0 salientes para el partner de usuario de confianza RP1. -
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.
Key and Certificate Management-Rollover in OAM and STS
F61370-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.