How do I change the certificate on an IDP web server?
Nate Klingenstein
ndk at internet2.edu
Wed Jul 25 12:29:32 EDT 2012
Chloe,
To add to Paul's answer with a little more detail on some of your
questions...
> I thought that since the IDP didn't care about the SP's web server
> certificate, and it doesn't
> perform any verification other than with metadata, then the SP
> wouldn't care about the IDP's
> web server certificate either, and would only use metadata.
The IdP, in almost all deployment situations, doesn't care about the
certificates used by the web server that hosts the SP because that web
server isn't directly involved in any communication with the IdP. The
user will interface with the web server while carrying messages from
the IdP, but the trust comes from the signature on the assertion that
the user is carrying. An SSL tunnel exists between the user and the
SP's web server when delivering that assertion, but that just provides
a secure, private channel for that particular step.
> Why make it so that the IDP only verifies via metadata, but the SP
> verifies by metadata AND a web server certificate?
The SP only verifies by metadata as well. The difference is, in
backchannel communications between the SP and the IdP, the SP presents
its certificate directly, but the IdP's web server presents the
certificate on the IdP's behalf. That's because of the way each piece
was implemented: it's easy to initiate a query from the SP using the
CURL libraries, but challenging and uncommon for Java Servlets like
the IdP to receive and process web queries themselves.
> How would I add the web server certificate to the IDP metadata? The
> SP fetches the IDP's
> metadata via HTTP and saves it into a file.
You'd have to change the IdP's metadata wherever the SP is pulling it
from. The SP generates metadata dynamically based on its
configuration files, but the IdP generates it once during installation
and you need to make further changes yourself.
If you're using the built-in /idp/profile/Metadata/SAML handler, then
you need to modify the file that it's hosting, typically $IDP_HOME/
metadata/idp-metadata.xml. You'll see two certificates in there, and
you can replace those, or add your new certificate next to each of the
old ones.
> I see multiple
> <security:Credential id="IdPCredential"
> xsi:type="security:X509Filesystem">
> with different ids in relying-party.xml. Would I add the web server
> cert/key there?
Your IdP should have one credential in most deployment situations,
including this one. For rollover, you'd follow this general process:
1) Add new certificate to metadata
2) Change Apache's SOAP port (generally 8443) configuration to use
the new certificate in place of the old
3) Change the IdP's relying-party.xml to use the new certificate in
place of the old
4) Remove old certificate from metadata
Done.
I hope between Paul's response and my own, most of your questions were
answered.
Nate.
More information about the users
mailing list