Gerenciamento de Chaves e Certificados e Rollover no OAM e no STS
Introdução
Como parte da interação do protocolo de Federação e WS-Trust, o OAM/OSTS precisa usar Chaves e Certificados PKI para não repúdio e integridade por meio do uso de assinaturas digitais e confidencialidade por meio da criptografia digital.
Este artigo discute sobre o gerenciamento de Chaves e Certificados, incluindo como:
-
Gerar novas chaves e certificados
-
Configurar o OAM e o OSTS para usar as novas chaves e certificados
-
Implementar um rollover de chave por parceiro
-
Distribuir os novos certificados para parceiros
Em uma troca de Federação/WS-Trust, ocorre o seguinte:
-
O OAM/OSTS usa suas próprias Chaves e Certificados PKI para executar operações de assinatura e decriptografia nas mensagens SAML
-
Assinar mensagens SAML de saída e Asserções (assinaturas XML Digital ou assinaturas de String de Consulta)
-
Decriptografar Asserções SAML de entrada (criptografia digital XML)
-
O OAM/OSTS usa o certificado de assinatura ou criptografia do parceiro para:
-
Verificar assinaturas em mensagens SAML de entrada e Asserções (XML)
-
Opcionalmente, criptografar Asserções SAML de saída (criptografia digital XML)
Exemplo de Mensagens SAML com Assinaturas Digitais 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>
Exemplo de Mensagens SAML com assinatura de string de consulta (normalmente usado por um SP para enviar o usuário ao IdP com um 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: Mensagem SAML AuthnRequest
RelayState: Parâmetro de Estado de Retransmissão SAML 2.0
SigAlg: algoritmo de assinatura
Signature: bytes de assinatura que abrangem parâmetros SAMLRequest, RelayState e SigAlg
As chaves e os certificados PKI do OAM/OSTS são armazenados no arquivo Java Keystore $DOMAIN_HOME/config/fmwconfig/.oamkeystore (Observação: essa área de armazenamento de chaves é do tipo JCEKS, não JKS) e as definições do OAM/OSTS fazem referência às entradas de chave da área de armazenamento de chaves, de forma que elas possam ser usadas pelos componentes para operações SAML.
Instalar
Durante a fase de instalação do OAM, um par de chaves e um certificado autoassinado são gerados e o OAM/OSTS é configurado para usá-los em operações de assinatura e decriptografia.
-
O instalador do OAM cria o .oamkeystore com uma senha aleatória (consulte a seção "Definindo novas entradas de chave" sobre como redefinir essa senha)
-
Uma nova entrada de chave chamada
stsprivatekeyaliasé criada -
Par de Chaves RSA
-
Certificado assinado automaticamente
-
Assunto e Emissor definidos como:
cn=\<MACHINE_HOSTNAME\> -
Duas entradas são criadas na configuração do OAM/OSTS:
-
osts_signingreferenciando a Entrada de Chavestsprivatekeyaliasno armazenamento de chaves .oamke -
osts_encryptionreferenciando a Entrada de Chavestsprivatekeyaliasno armazenamento de chaves .oamke -
O OAM é configurado para usar a entrada
osts_signingpara operações de assinatura eosts_encryptionpara operações de decriptografia -
O OSTS é configurado para usar
osts_encryptionpara operações de decriptografia eosts_signingpara operações de assinatura nos Modelos de Emissão SAML
Definindo novas entradas de chave
O processo de criação de novas Chaves e Certificados PKI antes de usá-los no OAM/OSTS é duplo:
-
Criando a entrada de chave em
.oamkeystore -
Criando a entrada no OAM/OSTS para fazer referência à entrada de chave em
.oamkeystore
Observação: as chaves e os certificados precisam ser armazenados no HSM .oamkeystore; não são suportados.
Criando uma nova Entrada de Chave no .oamkeystore
Como mencionado anteriormente, a senha da área de armazenamento de chaves .oamkeystore é desconhecida para o administrador e precisa ser redefinida para fazer modificações. Esta operação é feita por meio de um comando WLST:
-
Informe o ambiente WLST executando:
$IAM_ORACLE_HOME/common/bin/wlst.sh. -
Conecte-se ao servidor de Administração WLS:
connect(). -
Navegue até a ramificação Runtime do Domínio:
domainRuntime(). -
Redefina a senha do .oamkeystore:
resetKeystorePassword(). -
Saia do ambiente WLST:
exit().
Uma forma de criar uma nova entrada de chave no .oamkeystore é usar o aplicativo KeyTool do JDK. Neste exemplo, duas entradas de chave com certificados autoassinados são criadas, uma com o alias samlsigning e a outra com o alias samlencryption (substitua $JDK_HOME e $DOMAIN_HOME pelo caminho correto; para a senha da área de armazenamento de chaves, informe a que você selecionou durante a operação de redefinição):
$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
Atualizando definições de OAM/OSTS
Depois que as entradas de chave forem criadas no armazenamento de chaves .oamke, novas entradas de chave SAML deverão ser criadas no OAM/OSTS para que essas chaves possam ser usadas durante as trocas de protocolo SAML.
Para criar uma nova entrada de chave SAML no OAM/OSTS:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole. -
Navegue até Configuração , Definições de Federação ou Definições do Security Token Service.
-
Cria uma nova entrada:
-
Na seção Armazenamento de Chaves, clique no botão "+".
-
Informe um KeyID para a nova entrada (por exemplo,
saml-signing). -
Selecione o alias da nova entrada de chave no menu suspenso que lista as entradas de chave no .oamkeystore (por exemplo,
samlsigning). -
Insira a senha da entrada de chave definida ao criar essa chave na seção anterior.
-
Repita o processo para outras entradas, se necessário.
-
-
Clique em Aplicar.

Descrição da ilustração Federation_Settings.jpg
Observação: IDs de chave diferentes podem fazer referência à mesma entrada de chave na Área de Armazenamento de Chaves do OAM
Usando novas entradas de chave
Definições Globais
Para atualizar as definições globais do OAM para usar novas chaves e certificados para assinar e decriptografar mensagens SAML, execute as seguintes operações:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-admin-port/oamconsole. -
Navegue até Configuração , Definições da Federação.
-
Selecione a Chave de Assinatura na lista drop-down de entradas de chave (essas entradas são definidas na seção Área de Armazenamento de Chaves). Por exemplo, selecione
saml-signing. -
Selecione a Chave de Criptografia na lista drop-down de entradas de chave (essas entradas são definidas na seção Área de Armazenamento de Chaves). Por exemplo, selecione
saml-encryption. -
Clique em Aplicar.
Observação: após a aplicação, talvez seja necessário redistribuir certificados e/ou Metadados SAML 2.0 para parceiros)

Descrição da ilustração Global_Settings.jpg
Para atualizar as definições globais do OSTS para usar novas chaves e certificados para decriptografar mensagens SAML, execute as seguintes operações:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole. -
Navegue até Configuração, Definições de Serviço do Token de Segurança.
-
Selecione o Modelo de Criptografia Padrão na lista drop-down de entradas de chave (essas entradas são definidas na seção Armazenamento de Chaves). Por exemplo, selecione
samlencryption. -
Clique em Aplicar.
Observação: após a aplicação, talvez seja necessário redistribuir certificados para parceiros

Descrição da ilustração Security_Token_Service_Settings.jpg
Para atualizar as configurações do OSTS para usar novas chaves e certificados para assinar mensagens SAML, execute as seguintes operações:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole. -
Navegue até Serviço de Token de Segurança, Modelos de Emissão de Token.
-
Clique no Modelo de Emissão SAML que deseja atualizar.
-
Clique na guia Segurança.
-
Selecione o ID do Modelo de Acesso à Área de Armazenamento de Chaves de Assinatura na lista drop-down de entradas de chaves (essas entradas são definidas na seção Área de Armazenamento de Chaves). Por exemplo, selecione
saml-signing. -
Clique em Aplicar.
Observação: após a aplicação, talvez seja necessário redistribuir certificados para parceiros

Descrição da ilustração Issuance_Template.jpg
Rolagem da Chave por Parceiro
Quando uma implantação do OAM/OSTS está envolvida com vários parceiros, pode ser difícil alterar as chaves/certificados de assinatura/criptografia global de uma só vez, pois isso requer notificar todos os parceiros ao mesmo tempo das alterações e fazer com que eles atualizem sua configuração com os novos certificados/metadados do SAML 2.0.
Observação: Depois de atualizar as chaves/certificados no OAM/OSTS, os fluxos de Federação/WS-Trust não funcionarão com os parceiros até que eles façam upload dos novos certificados em seu sistema.
O OAM/OSTS oferece uma maneira fácil de executar um rollover de chave por parceiro, permitindo que o administrador do OAM planeje como e quando notificar parceiros específicos sobre a alteração de chave e certificados.
-
A execução do rollover de chaves para parceiros do OAM IdP ou SP envolve:
-
Configurar novas chaves e certificados conforme explicado na seção anterior.
-
Atualizar a configuração do parceiro IdP ou SP no OAM para usar as novas chaves e certificados.
-
Notificando o parceiro com novos Metadados SAML 2.0 gerados especificamente com essas novas chaves/certificados ou novos certificados correspondentes às novas entradas de chave.
-
-
A execução do rollover-chave para parceiros do OSTS Relying Party envolve:
-
Configurar novas chaves e certificados conforme explicado na seção anterior, se ainda não houver uma.
-
Criando um novo Perfil de Parceiro Confiável, que seria uma cópia do Perfil de Parceiro Confiável atual usado pelo parceiro de Parceiro Confiável.
-
Criando um novo Modelo de Emissão SAML, cópia do Modelo de Emissão SAML referenciado pelo Perfil da Parte Confiável usado atualmente pelo parceiro da Parte Confiável.
-
Atualize o novo Perfil da Parte Confiável para usar o novo Modelo de Emissão SAML em vez do atual.
-
-
Atualizar o novo Modelo de Emissão SAML para usar as novas chaves/certificados
-
Atribuir o parceiro Confiável ao novo Perfil da Parte Confiável
Observação: o rollover da chave do OAM pode ser feito por meio de um grupo de parceiros usando Perfis de Parceiros na configuração do OAM.
Rolagem da Chave do OAM
Ao executar um rollover de chave para um parceiro específico, primeiro você precisa atualizar a configuração do Parceiro SP ou IdP no OAM por meio de um comando WLST:
-
Informe o ambiente WLST executando:
$IAM_ORACLE_HOME/common/bin/wlst.sh. -
Conecte-se ao servidor de Administração WLS:
connect(). -
Navegue até a ramificação Runtime do Domínio:
domainRuntime(). -
Atualize a configuração do parceiro para definir a propriedade Chave de Assinatura (referenciada por
signingkeystoreaccesstemplateid) como o ID de entrada de chave definido nas Definições da Federação, seção Armazenamento de Chaves (neste exemplo,saml-signingé o ID de entrada de chave; substitua<PARTNER_NAME>pelo nome do parceiro no OAM; substitua<IDP_OR_SP>pelo IDP ou SP, o tipo de parceiro): - Atualize a configuração do parceiro para definir a propriedade Chave de Criptografia (referenciada por
encryptionkeystoreaccesstemplateid) como o ID de entrada de chave definido nas Definições da Federação, seção Área de Armazenamento de Chaves (neste exemplo, saml-encryption é o ID de entrada de chave; substitua<PARTNER_NAME>pelo nome do parceiro no OAM; substitua<IDP_OR_SP>pelo IDP ou SP, o tipo de parceiro): - Saia do ambiente WLST:
exit().
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
Depois que a configuração do parceiro for atualizada, o parceiro precisará usar os metadados SAML 2.0 ou as informações do certificado. Para gerar essas informações:
-
Se você precisar fornecer metadados SAML 2.0 para a nova chave de assinatura e criptografia, abra um browser e use o URL a seguir para gerar os metadados
http://oam-runtime-host:oam-runtime-port/oamfed/idp/metadata?signid=<SIGN_KEYENTRY_ID>&encid=<ENC_KEYENTRY_ID>. -
O parâmetro de consulta
signidcontém o ID de entrada de chave do certificado de assinatura. -
Substitua
<SIGN_KEYENTRY_ID>. -
O parâmetro de consulta
encidcontém o ID de entrada de chave do certificado de criptografia. Substitua<SIGN_KEYENTRY_ID>Um exemplo é:http://oam.com/oamfed/idp/metadata?signid=saml-signing&encid=samlencryption. -
Se você precisar fornecer o arquivo de certificado para a nova chave, abra um browser e use o seguinte URL para gerar o certificado no formato PEM:
http://oam-runtime-host:oam-runtime-port/oamfed/idp/cert?id=<KEYENTRY_ID>. -
O parâmetro de consulta de id contém o ID de entrada de chave do certificado.
-
Substitua
<KEYENTRY_ID>.
Um exemplo é: http://oam.com/oamfed/idp/cert?id=saml-signing
Observação: primeiro você pode gerar os Metadados/Certificado SAML 2.0 e fornecê-los ao parceiro antes de atualizar a configuração do parceiro.
Rolagem da Chave OSTS
Para explicar o rollover da chave do OSTS, veja um exemplo do seguinte:
-
Três parceiros Confiáveis: RP1, RP2 e RP3
-
Dois Perfis de Parte Confiável:
RPprofileAeRPprofileB, com RP1 e RP2 usandoRPprofileAe RP3 usandoRPprofileB -
Dois Modelos de Emissão SAML 2.0,
SAMLIssuanceAreferenciados porRPprofileAeSAMLIssuanceBreferenciados porRPprofileB
O rollover consiste em alternar o RP1 primeiro, depois o RP2 e depois o RP3, para que esses parceiros usem o novo certificado saml-signing.
Para alternar RP1, as seguintes operações devem ser executadas:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole. -
Navegue até Serviço de Token de Segurança , Perfis de Parceiro , Perfis de Parte Confiável.
-
Crie um novo Perfil de Parte Confiável chamado
NewRPprofileA, cópia deRPprofileA. -
Navegue até Serviço de Token de Segurança, Modelos de Emissão de Token.
-
Crie um novo Modelo de Emissão SAML chamado
NewSAMLIssuanceA, cópia deSAMLIssuanceA. -
Atualize
NewRPprofileApara fazer referência ao Modelo de EmissãoNewSAMLIssuanceASAML 2.0. - Atualize o Modelo de Emissão
NewSAMLIssuanceASAML 2.0 na guia Segurança para usar a nova entrada de chave. -
Navegue até Serviço de Token de Segurança, Parceiros, Partes Confiáveis.
-
Abra RP1 e configure-o para usar o
NewRPprofileAPerfil da Parte Confiável: a partir de então, o OSTS usa a nova entrada de chavesaml-signingpara assinar Asserções SAML 2.0 de saída para o parceiro da Parte Confiável RP1. - Faça download dos novos certificados do OSTS abrindo um browser e use o URL a seguir para gerar o certificado no formato PEM.
-
O parâmetro de consulta de id contém o ID de entrada de chave do certificado.
-
Substitua
<KEYENTRY_ID>. - Forneça o certificado ao parceiro.

Descrição da ilustração New_RPProfile_A.jpg

Descrição da ilustração New_SAMLIssuanceA.jpg

Descrição da ilustração Configure_RP1.jpg
http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>
Um exemplo é: http://oam.com/sts/servlet/samlcert?id=saml-signing
Alternar RP2 para o novo certificado será mais rápido, pois o novo perfil de Parte Confiável e o Modelo de Emissão SAML já foram criados.
Para alternar RP2, as seguintes operações devem ser executadas:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole. -
Navegue até Serviço de Token de Segurança, Parceiros, Partes Confiáveis.
-
Abra RP1 e configure-o para usar o
NewRPprofileAPerfil da Parte Confiável: a partir de então, o OSTS usa a nova entrada de chavesaml-signingpara assinar Asserções SAML 2.0 de saída para o parceiro da Parte Confiável RP1. -
Forneça o certificado ao parceiro.
A alternância de RP3 para o novo certificado consiste em repetir as operações executadas para RP1, uma vez que o novo perfil de Parte Confiável e o Modelo de Emissão SAML para RP3 ainda não foram criados.
Observação: primeiro você pode fornecer o novo certificado ao parceiro antes de atualizar a configuração do OSTS.
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Key and Certificate Management-Rollover in OAM and STS
F61370-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.