Shibboleth SPv3: checking how to rollover the signing key
Gernot Hassenpflug
gernot.hassenpflug at asahinet.com
Fri Mar 13 07:31:42 EDT 2020
Hello,
This is the first time for us to try and rollover a signing key, as
opposed to an encryption key.
I would like to confirm whether the order of operations is the same as
that for rollover of an encryption key.
On the following page,
https://wiki.shibboleth.net/confluence/display/SP3/Multiple+Credentials
there is stated under 'Key Rollover' that
"On the authentication side, the solution is to publish the new
key/certificate in your metadata and wait for that to propagate before
switching your SP from the old credential to the new one. In that
scenario, you need not ever configure both within the SP itself (i.e.,
it's different from this topic's goal)."
On the following page,
https://wiki.shibboleth.net/confluence/display/IDP30/SecurityAndNetworking#SecurityAndNetworking-SigningKeyandCertificate
there is stated under 'SP Signing and Back-Channel TLS Keys and
Certificates' that
"An SP may advertise any number of such keys in its metadata and the IdP
will accept any of them. This allows a new key to be added alongside an
older key before adding it to the SP configuration, as part of replacing
the old key with the new one."
I want to confirm that I understand that above correctly:
It appears to mean that one must not add the new signing key to the SP's
chained CredentialResolver block first before publishing in the
metadata. Instead, since the first user of the key will be the SP, one
must publish in (add to) the published SP metadata first, so that the
IdP knows that a message signed with this key by the SP is legitimate
when one then uses the new key. Presumably, if the IdP does not have
knowledge the new SP key yet, the IdP will display some kind of error
that the SP message does not meet security standards. If my
understanding is correct, I presume the rolloever order will be:
1. Publish the new signing key in metadata (adding to existing keys
listed in the SP metadata), with use="signing".
2. Confirm that the IdP has read the new SP metadata.
3. Add the new signing key to the chained SP CredentialResolver block. I
assume that the SP can use any of the use="signed" keys, and that one
should list the new one ahead of the old one in the list (or maybe
there is some other way to ensure the new one is used in
preference?).
4. Check that the SP and IdP can communicate (and used debug logs
perhaps if possible to see that the new signing key is in use).
5. Remove the old signing key from chained SP CredentialResolver block,
thus leaving only the new signing key.
6. Check again that the SP and IdP can communicate (and verify in debug
logs if possible).
7. Remove the old signing key from the SP metadata, publish it, and ask
the IdP to read it (if they do not update in a timely manner it is
not critical since the SP will never use the key).
If the above is correct, maybe it would be useful to have in the Wiki
along with the encryption key rollover procedure?
Best regards,
Gernot Hassenpflug
--
Asahi Net, Inc.
Tokyo, Japan
More information about the users
mailing list