Gestione di chiavi e certificati e rinnovo in OAM e STS

Introduzione

Nell'ambito dell'interazione tra la Federazione e il protocollo WS-Trust, OAM/OSTS deve utilizzare chiavi e certificati PKI per non disconoscimento e integrità tramite l'uso delle firme digitali e la riservatezza tramite la crittografia digitale.

Questo articolo tratta la gestione delle chiavi e dei certificati, incluso come:

In uno scambio federativo/WS-Trust si verifica quanto segue:

Esempio di messaggi SAML con firme digitali 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>

Esempio di messaggi SAML con firma di stringa di query (in genere utilizzati da un SP per inviare l'utente 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: messaggio AuthnRequest SAML

RelayState: parametro Stato relay SAML 2.0

SigAlg: algoritmo di firma

Signature: byte di firma che coprono i parametri SAMLRequest, RelayState e SigAlg

Le chiavi e i certificati PKI OAM/OSTS vengono memorizzati nel file keystore Java $DOMAIN_HOME/config/fmwconfig/.oamkeystore (Nota: questo keystore è di tipo JCEKS e non JKS) e le impostazioni OAM/OSTS fanno riferimento alle voci chiave del keystore .oamkeystore in modo che possano essere utilizzate dai componenti per le operazioni SAML.

Installa

Durante la fase di installazione di OAM, vengono generate una coppia di chiavi e un certificato con firma automatica e OAM/OSTS è configurato per utilizzarlo per le operazioni di firma e decifrazione.

Impostazione di nuove voci chiave

Il processo di creazione di nuove chiavi e certificati PKI prima di utilizzarli in OAM/OSTS è duplice:

Nota: le chiavi e i certificati devono essere memorizzati in .oamkeystore. HSM non è supportato.

Creazione di una nuova voce chiave in .oamkeystore

Come accennato in precedenza, la password del keystore .oamkeystore è sconosciuta all'amministratore e deve essere reimpostata per apportare modifiche. Questa operazione viene eseguita mediante un comando WLST:

  1. Immettere l'ambiente WLST eseguendo: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Connettersi al server di amministrazione WLS: connect().

  3. Passare alla diramazione Runtime dominio: domainRuntime().

  4. Reimpostare la password .oamkeystore: resetKeystorePassword().

  5. Uscire dall'ambiente WLST: exit().

Un modo per creare una nuova voce di chiave nel file .oamkeystore consiste nell'utilizzare l'applicazione KeyTool del kit JDK. In questo esempio vengono create due voci chiave con certificati autofirmati, una con la firma alias e l'altra con la cifratura alias (sostituire $JDK_HOME e $DOMAIN_HOME con il percorso corretto; per la password del keystore immettere quella selezionata durante l'operazione di reimpostazione):

$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

Aggiornamento delle impostazioni OAM/OSTS

Dopo aver creato le voci chiave nel keystore .oamkeystore, è necessario creare nuove voci chiave SAML in OAM/OSTS prima di poter utilizzare tali chiavi durante gli scambi di protocollo SAML.

Per creare una nuova voce di chiave SAML in OAM/OSTS:

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Passare a Configurazione, Impostazioni federazione o Impostazioni del servizio token di sicurezza.

  3. Crea una nuova voce:

    1. Nella sezione Keystore, fare clic sul pulsante "+".

    2. Immettere un valore KeyID per la nuova voce (ad esempio saml-signing).

    3. Selezionare l'alias per la nuova voce chiave dall'elenco a discesa che elenca le voci chiave nel file .oamkeystore (ad esempio samlsigning).

    4. Immettere la password per la voce chiave impostata durante la creazione della chiave nella sezione precedente.

    5. Se necessario, ripetere il processo per altre voci.

  4. Fare clic su Applica.

Descrizione dell'immagine Federation_Settings.jpg

Nota: ID chiave diversi possono fare riferimento alla stessa voce chiave nel keystore OAM

Utilizzo di nuove voci chiave

Impostazioni globali

Per aggiornare le impostazioni OAM globali in modo da utilizzare le nuove chiavi e i nuovi certificati per firmare e decifrare i messaggi SAML, eseguire le operazioni riportate di seguito.

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-admin-port/oamconsole.

  2. Passare a Configurazione, Impostazioni federazione.

  3. Selezionare la chiave di firma dall'elenco a discesa delle voci della chiave (queste voci sono definite nella sezione Keystore). Ad esempio, selezionare saml-signing.

  4. Selezionare la chiave di cifratura dall'elenco a discesa delle voci della chiave (queste voci sono definite nella sezione Keystore). Ad esempio, selezionare saml-encryption.

  5. Fare clic su Applica.

Nota: dopo l'applicazione, potrebbe essere necessario ridistribuire i certificati e/o i metadati SAML 2.0 ai partner.

Descrizione dell'immagine Global_Settings.jpg

Per aggiornare le impostazioni OSTS globali in modo da utilizzare nuove chiavi e certificati per decifrare i messaggi SAML, eseguire le operazioni riportate di seguito.

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Passare a Configurazione, Impostazioni del servizio token di sicurezza.

  3. Selezionare il modello di cifratura predefinito dall'elenco a discesa delle voci chiave (queste voci sono definite nella sezione Keystore). Ad esempio, selezionare samlencryption.

  4. Fare clic su Applica.

Nota: dopo l'applicazione potrebbe essere necessario ridistribuire i certificati ai partner

Descrizione dell'immagine Security_Token_Service_Settings.jpg

Per aggiornare le impostazioni OSTS in modo da utilizzare nuove chiavi e certificati per firmare i messaggi SAML, eseguire le operazioni riportate di seguito.

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Passare a Security Token Service, Token Issuance Templates.

  3. Fare clic sul modello di emissione SAML che si desidera aggiornare.

  4. Fare clic sulla scheda Sicurezza.

  5. Selezionare Firma ID modello di accesso keystore dall'elenco a discesa delle voci chiave (queste voci sono definite nella sezione Keystore). Ad esempio, selezionare saml-signing.

  6. Fare clic su Applica.

Nota: dopo l'applicazione potrebbe essere necessario ridistribuire i certificati ai partner

Descrizione dell'immagine Issuance_Template.jpg

Rollover chiave per partner

Quando una distribuzione OAM/OSTS è coinvolta in numerosi partner, potrebbe essere difficile modificare contemporaneamente le chiavi di firma/cifratura/certificati globali, poiché ciò richiede la notifica a tutti i partner contemporaneamente delle modifiche e l'aggiornamento della configurazione con i nuovi certificati/metadati SAML 2.0.

Nota: dopo aver aggiornato le chiavi o i certificati in OAM/OSTS, i flussi Federation/WS-Trust non funzioneranno con i partner finché non caricheranno i nuovi certificati nel proprio sistema.

OAM/OSTS fornisce un modo semplice per eseguire un rollover chiave per partner, consentendo così all'amministratore OAM di pianificare come e quando notificare la modifica della chiave e dei certificati a partner specifici.

Nota: il rollover della chiave OAM può essere eseguito tramite un gruppo di partner utilizzando i profili partner nella configurazione OAM.

Rollover chiave OAM

Quando esegui un rollover delle chiavi per un partner specifico, devi prima aggiornare la configurazione del partner IdP o SP in OAM tramite un comando WLST:

  1. Immettere l'ambiente WLST eseguendo: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Connettersi al server di amministrazione WLS: connect().

  3. Passare alla diramazione Runtime dominio: domainRuntime().

  4. Aggiornare la configurazione del partner per impostare la proprietà Chiave di firma (riferita da signingkeystoreaccesstemplateid) sull'ID voce chiave definito nella sezione Impostazioni federazione , Keystore (in questo esempio, saml-signing è l'ID voce chiave; sostituire <PARTNER_NAME> con il nome del partner in OAM; sostituire <IDP_OR_SP> con IDP o SP, il tipo di partner):

  5. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
    
  6. Aggiornare la configurazione del partner per impostare la proprietà Chiave di cifratura (riferita da encryptionkeystoreaccesstemplateid) sull'ID voce chiave definito nella sezione Impostazioni federazione , Keystore (in questo esempio, la cifratura saml è l'ID voce chiave; sostituire <PARTNER_NAME> con il nome del partner in OAM; sostituire <IDP_OR_SP> con IDP o SP, il tipo di partner):
  7. updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
    
  8. Uscire dall'ambiente WLST: exit().

Una volta aggiornata la configurazione del partner, il partner deve utilizzare i metadati SAML 2.0 o le informazioni sul certificato. Per generare queste informazioni, effettuare le operazioni riportate di seguito.

Esempio: http://oam.com/oamfed/idp/cert?id=saml-signing

Nota: è possibile generare i metadati/certificato SAML 2.0 e fornirli al partner prima di aggiornare la configurazione del partner.

Rollover della chiave OSTS

Per spiegare il rollover della chiave OSTS, fare un esempio di:

Il rollover consiste nel cambiare prima RP1, quindi RP2 e infine RP3 per fare in modo che i partner utilizzino il nuovo certificato saml-signing.

Per passare a RP1, è necessario eseguire le seguenti operazioni:

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-admin- port/oamconsole.

  2. Passare a Security Token Service, Profili partner, Profili parte ricevente.

  3. Creare un nuovo profilo parte ricevente denominato NewRPprofileA, copia di RPprofileA.

  4. Passare a Security Token Service, Token Issuance Templates.

  5. Creare un nuovo modello di emissione SAML denominato NewSAMLIssuanceA, copia di SAMLIssuanceA.

  6. Aggiornare NewRPprofileA per fare riferimento al modello di emissione SAML 2.0 NewSAMLIssuanceA.

  7. Descrizione dell'immagine New_RPProfile_A.jpg

  8. Aggiornare il modello di emissione SAML 2.0 NewSAMLIssuanceA nella scheda Sicurezza per utilizzare la nuova voce di chiave.
  9. Descrizione dell'immagine New_SAMLIssuanceA.jpg

  10. Passare a Security Token Service, Partner, Parti riceventi.

  11. Aprire RP1 e configurarlo per utilizzare il profilo parte ricevente NewRPprofileA: da allora in poi, OSTS utilizza la nuova voce chiave saml-signing per firmare le asserzioni SAML 2.0 in uscita per il partner parte ricevente RP1.

  12. Descrizione dell'illustrazione Configure_RP1.jpg

  13. Scaricare i nuovi certificati da OSTS aprendo un browser e utilizzare l'URL seguente per generare il certificato in formato PEM.
  14. http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>

  15. Il parametro query ID contiene l'ID voce chiave per il certificato.

  16. Sostituire <KEYENTRY_ID>.

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

  18. Fornire il certificato al partner.

Il passaggio di RP2 al nuovo certificato sarà più rapido poiché il nuovo profilo della parte ricevente e il modello di emissione SAML sono già stati creati.

Per passare a RP2, è necessario eseguire le seguenti operazioni:

  1. Andare alla console di amministrazione OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Passare a Security Token Service, Partner, Parti riceventi.

  3. Aprire RP1 e configurarlo per utilizzare il profilo parte ricevente NewRPprofileA: da allora in poi, OSTS utilizza la nuova voce chiave saml-signing per firmare le asserzioni SAML 2.0 in uscita per il partner parte ricevente RP1.

  4. Fornire il certificato al partner.

Il passaggio da RP3 al nuovo certificato consiste nel ripetere le operazioni eseguite per RP1, poiché il nuovo profilo della parte ricevente e il modello di emissione SAML per RP3 non sono stati ancora creati.

Nota: è innanzitutto possibile fornire il nuovo certificato al partner prima di aggiornare la configurazione OSTS.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o visita altri contenuti di formazione gratuiti sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione sul prodotto, visitare Oracle Help Center.