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:

Em uma troca de Federação/WS-Trust, ocorre o seguinte:

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.

Definindo novas entradas de chave

O processo de criação de novas Chaves e Certificados PKI antes de usá-los no OAM/OSTS é duplo:

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:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Redefina a senha do .oamkeystore: resetKeystorePassword().

  5. 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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Configuração , Definições de Federação ou Definições do Security Token Service.

  3. Cria uma nova entrada:

    1. Na seção Armazenamento de Chaves, clique no botão "+".

    2. Informe um KeyID para a nova entrada (por exemplo, saml-signing).

    3. Selecione o alias da nova entrada de chave no menu suspenso que lista as entradas de chave no .oamkeystore (por exemplo, samlsigning).

    4. Insira a senha da entrada de chave definida ao criar essa chave na seção anterior.

    5. Repita o processo para outras entradas, se necessário.

  4. 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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-admin-port/oamconsole.

  2. Navegue até Configuração , Definições da Federação.

  3. 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.

  4. 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.

  5. 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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Configuração, Definições de Serviço do Token de Segurança.

  3. 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.

  4. 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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Navegue até Serviço de Token de Segurança, Modelos de Emissão de Token.

  3. Clique no Modelo de Emissão SAML que deseja atualizar.

  4. Clique na guia Segurança.

  5. 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.

  6. 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.

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:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. 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):

  5. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
    
  6. 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):
  7. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
    
  8. Saia do ambiente WLST: exit().

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:

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:

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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Navegue até Serviço de Token de Segurança , Perfis de Parceiro , Perfis de Parte Confiável.

  3. Crie um novo Perfil de Parte Confiável chamado NewRPprofileA, cópia de RPprofileA.

  4. Navegue até Serviço de Token de Segurança, Modelos de Emissão de Token.

  5. Crie um novo Modelo de Emissão SAML chamado NewSAMLIssuanceA, cópia de SAMLIssuanceA.

  6. Atualize NewRPprofileA para fazer referência ao Modelo de Emissão NewSAMLIssuanceA SAML 2.0.

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

  8. Atualize o Modelo de Emissão NewSAMLIssuanceA SAML 2.0 na guia Segurança para usar a nova entrada de chave.
  9. Descrição da ilustração New_SAMLIssuanceA.jpg

  10. Navegue até Serviço de Token de Segurança, Parceiros, Partes Confiáveis.

  11. Abra RP1 e configure-o para usar o NewRPprofileA Perfil da Parte Confiável: a partir de então, o OSTS usa a nova entrada de chave saml-signing para assinar Asserções SAML 2.0 de saída para o parceiro da Parte Confiável RP1.

  12. Descrição da ilustração Configure_RP1.jpg

  13. Faça download dos novos certificados do OSTS abrindo um browser e use o URL a seguir para gerar o certificado no formato PEM.
  14. http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>

  15. O parâmetro de consulta de id contém o ID de entrada de chave do certificado.

  16. Substitua <KEYENTRY_ID>.

  17. Um exemplo é: http://oam.com/sts/servlet/samlcert?id=saml-signing

  18. Forneça o certificado ao parceiro.

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:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Serviço de Token de Segurança, Parceiros, Partes Confiáveis.

  3. Abra RP1 e configure-o para usar o NewRPprofileA Perfil da Parte Confiável: a partir de então, o OSTS usa a nova entrada de chave saml-signing para assinar Asserções SAML 2.0 de saída para o parceiro da Parte Confiável RP1.

  4. 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.