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:
-
Genera nuove chiavi e nuovi certificati
-
Configurare OAM e OSTS per utilizzare le nuove chiavi e i nuovi certificati
-
Implementa un rollover chiave per partner
-
Distribuire i nuovi certificati ai partner
In uno scambio federativo/WS-Trust si verifica quanto segue:
-
OAM/OSTS utilizza le proprie chiavi e certificati PKI per eseguire operazioni di firma e decifrazione sui messaggi SAML
-
Firma messaggi e asserzioni SAML in uscita (firme digitali XML o firme stringa di query)
-
Decifra asserzioni SAML in entrata (crittografia XML Digital)
-
OAM/OSTS utilizza il certificato di firma o cifratura del partner per:
-
Verifica le firme nei messaggi e nelle asserzioni SAML in entrata (XML)
-
Facoltativamente, cifrare le asserzioni SAML in uscita (cifratura XML Digital)
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.
-
Il programma di installazione di OAM crea il file .oamkeystore con una password casuale (vedere la sezione "Impostazione di nuove voci chiave" su come reimpostare la password)
-
Viene creata una nuova voce di chiave denominata
stsprivatekeyalias
-
Coppia di chiavi RSA
-
Certificato con firma automatica
-
Oggetto ed emittente impostati su:
cn=\<MACHINE_HOSTNAME\>
-
Nella configurazione OAM/OSTS vengono create due voci:
-
osts_signing
che fa riferimento alla voce chiavestsprivatekeyalias
in .oamkeystore -
osts_encryption
che fa riferimento alla voce chiavestsprivatekeyalias
in .oamkeystore -
OAM è configurato per utilizzare la voce
osts_signing
per le operazioni di firma eosts_encryption
per le operazioni di decifrazione -
OSTS è impostato per utilizzare
osts_encryption
per le operazioni di decifrazione eosts_signing
per le operazioni di firma nei modelli di emissione SAML
Impostazione di nuove voci chiave
Il processo di creazione di nuove chiavi e certificati PKI prima di utilizzarli in OAM/OSTS è duplice:
-
Creazione della voce della chiave in
.oamkeystore
-
Creazione della voce in OAM/OSTS per fare riferimento alla voce chiave in
.oamkeystore
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:
-
Immettere l'ambiente WLST eseguendo:
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connettersi al server di amministrazione WLS:
connect()
. -
Passare alla diramazione Runtime dominio:
domainRuntime()
. -
Reimpostare la password .oamkeystore:
resetKeystorePassword()
. -
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:
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Passare a Configurazione, Impostazioni federazione o Impostazioni del servizio token di sicurezza.
-
Crea una nuova voce:
-
Nella sezione Keystore, fare clic sul pulsante "+".
-
Immettere un valore KeyID per la nuova voce (ad esempio
saml-signing
). -
Selezionare l'alias per la nuova voce chiave dall'elenco a discesa che elenca le voci chiave nel file .oamkeystore (ad esempio
samlsigning
). -
Immettere la password per la voce chiave impostata durante la creazione della chiave nella sezione precedente.
-
Se necessario, ripetere il processo per altre voci.
-
-
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.
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-admin-port/oamconsole
. -
Passare a Configurazione, Impostazioni federazione.
-
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
. -
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
. -
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.
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Passare a Configurazione, Impostazioni del servizio token di sicurezza.
-
Selezionare il modello di cifratura predefinito dall'elenco a discesa delle voci chiave (queste voci sono definite nella sezione Keystore). Ad esempio, selezionare
samlencryption
. -
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.
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole
. -
Passare a Security Token Service, Token Issuance Templates.
-
Fare clic sul modello di emissione SAML che si desidera aggiornare.
-
Fare clic sulla scheda Sicurezza.
-
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
. -
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.
-
L'esecuzione del rollover chiave per i partner OAM IdP o SP implica:
-
Configurazione di nuove chiavi e certificati come spiegato nella sezione precedente.
-
Aggiornamento della configurazione del partner IdP o SP in OAM per l'utilizzo delle nuove chiavi e dei nuovi certificati.
-
Notifica al partner i nuovi metadati SAML 2.0 generati in modo specifico con le nuove chiavi/certificati o i nuovi certificati corrispondenti alle nuove voci di chiave.
-
-
L'esecuzione del rollover chiave per i partner della parte ricevente OSTS implica:
-
Configurazione di nuove chiavi e certificati come spiegato nella sezione precedente Se non sono già presenti.
-
Creazione di un nuovo profilo della parte ricevente, che sarà una copia del profilo della parte ricevente corrente utilizzato dal partner della parte ricevente.
-
Creazione di un nuovo modello di emissione SAML, copia del modello di emissione SAML a cui fa riferimento il profilo parte ricevente attualmente utilizzato dal partner parte ricevente.
-
Aggiornare il nuovo profilo parte ricevente per utilizzare il nuovo modello di emissione SAML anziché quello corrente.
-
-
Aggiornare il nuovo modello di emissione SAML per utilizzare le nuove chiavi/certificati
-
Assegna il partner parte ricevente al nuovo profilo parte ricevente
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:
-
Immettere l'ambiente WLST eseguendo:
$IAM_ORACLE_HOME/common/bin/wlst.sh
. -
Connettersi al server di amministrazione WLS:
connect()
. -
Passare alla diramazione Runtime dominio:
domainRuntime()
. -
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): - 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): - Uscire dall'ambiente WLST:
exit()
.
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>","signingkeystoreaccesstemplateid", "saml-signing", "string")
updatePartnerProperty("<PARTNER_NAME>", "<IDP_OR_SP>", "encryptionkeystoreaccesstemplateid", "saml-encryption", "string")
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.
-
Se è necessario fornire i metadati SAML 2.0 per la nuova chiave di firma e cifratura, aprire un browser e utilizzare l'URL seguente per generare i metadati
http://oam-runtime-host:oam-runtime-port/oamfed/idp/metadata?signid=<SIGN_KEYENTRY_ID>&encid=<ENC_KEYENTRY_ID>
. -
Il parametro di query
signid
contiene l'ID voce chiave per il certificato di firma. -
Sostituire
<SIGN_KEYENTRY_ID>
. -
Il parametro di query
encid
contiene l'ID voce chiave per il certificato di cifratura. Sostituire<SIGN_KEYENTRY_ID>
Un esempio èhttp://oam.com/oamfed/idp/metadata?signid=saml-signing&encid=samlencryption
. -
Se è necessario fornire il file di certificato per la nuova chiave, aprire un browser e utilizzare l'URL seguente per generare il certificato in formato PEM:
http://oam-runtime-host:oam-runtime-port/oamfed/idp/cert?id=<KEYENTRY_ID>
. -
Il parametro query ID contiene l'ID voce chiave per il certificato.
-
Sostituire
<KEYENTRY_ID>
.
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:
-
Tre partner della parte ricevente: RP1, RP2 e RP3
-
Due profili parte ricevente:
RPprofileA
eRPprofileB
, con RP1 e RP2 utilizzandoRPprofileA
e RP3 utilizzandoRPprofileB
-
Due modelli di emissione SAML 2.0,
SAMLIssuanceA
a cui fa riferimentoRPprofileA
eSAMLIssuanceB
a cui fa riferimentoRPprofileB
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:
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-admin- port/oamconsole
. -
Passare a Security Token Service, Profili partner, Profili parte ricevente.
-
Creare un nuovo profilo parte ricevente denominato
NewRPprofileA
, copia diRPprofileA
. -
Passare a Security Token Service, Token Issuance Templates.
-
Creare un nuovo modello di emissione SAML denominato
NewSAMLIssuanceA
, copia diSAMLIssuanceA
. -
Aggiornare
NewRPprofileA
per fare riferimento al modello di emissione SAML 2.0NewSAMLIssuanceA
. - Aggiornare il modello di emissione SAML 2.0
NewSAMLIssuanceA
nella scheda Sicurezza per utilizzare la nuova voce di chiave. -
Passare a Security Token Service, Partner, Parti riceventi.
-
Aprire RP1 e configurarlo per utilizzare il profilo parte ricevente
NewRPprofileA
: da allora in poi, OSTS utilizza la nuova voce chiavesaml-signing
per firmare le asserzioni SAML 2.0 in uscita per il partner parte ricevente RP1. - Scaricare i nuovi certificati da OSTS aprendo un browser e utilizzare l'URL seguente per generare il certificato in formato PEM.
-
Il parametro query ID contiene l'ID voce chiave per il certificato.
-
Sostituire
<KEYENTRY_ID>
. - Fornire il certificato al partner.
Descrizione dell'immagine New_RPProfile_A.jpg
Descrizione dell'immagine New_SAMLIssuanceA.jpg
Descrizione dell'illustrazione Configure_RP1.jpg
http://oam-runtime-host:oam-runtime-port/sts/servlet/samlcert?id=<KEYENTRY_ID>
Esempio: http://oam.com/sts/servlet/samlcert?id=saml-signing
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:
-
Andare alla console di amministrazione OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
. -
Passare a Security Token Service, Partner, Parti riceventi.
-
Aprire RP1 e configurarlo per utilizzare il profilo parte ricevente
NewRPprofileA
: da allora in poi, OSTS utilizza la nuova voce chiavesaml-signing
per firmare le asserzioni SAML 2.0 in uscita per il partner parte ricevente RP1. -
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.
Key and Certificate Management-Rollover in OAM and STS
F61370-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.