如何为 SAML SP 元数据使用 Tomcat SSL 证书

How to use Tomcat SSL certificate for SAML SP Meradata

SSL/TLS Tomcat 中的证书使用 server.xml 中的 <Connector> 标记配置如下:

<Connector
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="8443" maxThreads="200"
    scheme="https" secure="true" SSLEnabled="true"
    keystoreFile="${path.to.my.keystore.file}"
    keystorePass="${my.keystore.password}"
    clientAuth="false" sslProtocol="TLS"/>

资源 path.to.my.keystore.filemy.keystore.password 在 Tomcat 的 catalina.properties 文件中定义。项目使用 Spring 安全 SAML 扩展来实现 SSO。要求是在 SAML 服务提供商 (SP) 元数据中使用相同的证书。

有单独的团队管理 Tomcat 服务器的 SSL/TLS 证书。他们可能会更改密钥库文件或密码的位置。我希望我的应用程序不受这些更改的影响。

我正在使用 @PropertySource("file:/path/to/catalina.properties") 从我的应用程序中的 catalina.properties 文件中读取上述资源。这种方法好吗?有什么 better/recommended 方法可以为 TLS 和 SAML 使用相同的证书配置吗?

终于找到答案了

Tomcat 将 catalina.properties 中的属性公开为系统属性。所以 System.getProperty() 可以用来阅读它们。

参考:https://tomcat.apache.org/tomcat-8.0-doc/config/index.html

All system properties are available including those set using the -D syntax, those automatically made available by the JVM and those configured in the $CATALINA_BASE/conf/catalina.properties file.

其次,Spring SAML 文档表明可以使用 SSL/TLS 证书进行 SAML 消息签名和加密。

参考:Spring SAML Certificate Configuration Documentation

Private keys (with either self-signed or CA signed certificates) are used to digitally sign SAML messages, encrypt their content and in some cases for SSL/TLS Client authentication of your service provider application.