org.opensaml.common.SAMLRuntimeException:无法获取 SP 签名密钥
Posted
技术标签:
【中文标题】org.opensaml.common.SAMLRuntimeException:无法获取 SP 签名密钥【英文标题】:org.opensaml.common.SAMLRuntimeException: Can't obtain SP signing key 【发布时间】:2018-07-09 15:34:15 【问题描述】:无法通过领域发现阶段。虽然示例代码适用于 IDP SSO 圈。使用我们公司的 Metadata.xml 更新我们的 securityContext.xml 时面临问题,导入 pfx 证书并添加到密钥库。
使用以下命令添加到密钥库:
keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE_PASS -srcalias SOURCE_ALIAS -destkeystore samlKeystore.jks -deststoretype jks -deststorepass nalle123 -destalias alias
PFB 异常跟踪:
org.opensaml.common.SAMLRuntimeException: Can't obtain SP signing key
at org.springframework.security.saml.key.JKSKeyManager.getCredential(JKSKeyManager.java:193)
at org.springframework.security.saml.metadata.MetadataGenerator.getServerKeyInfo(MetadataGenerator.java:205)
at org.springframework.security.saml.metadata.MetadataGenerator.buildSPSSODescriptor(MetadataGenerator.java:329)
at org.springframework.security.saml.metadata.MetadataGenerator.generateMetadata(MetadataGenerator.java:189)
at org.springframework.security.saml.metadata.MetadataGeneratorFilter.processMetadataInitialization(MetadataGeneratorFilter.java:127)
at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:86)
和控制台消息如下:
未配置默认元数据,使用默认值生成,请预先配置元数据以供生产使用
无法检索实体 ID(密钥库别名)的密钥库条目:apollo
检查无效的密钥库实体 ID/别名输入密码
使用entityBaseURL
作为与客户端共享的最终方 url。还尝试使用出现在 metadata.xml
中的实体 ID。
非常感谢任何帮助。
【问题讨论】:
改进格式 【参考方案1】:使用 keytool 命令使用自签名密钥库时,密钥对密码(为 keytool 选项 -keypass 指定)和密钥库文件密码必须相同。
我们可以使用以下命令创建自签名密钥库
keytool -genkeypair -alias springsaml -keypass <password> -keystore saml-keystore.jks
在终端收到“输入密钥库密码”消息时,输入相同的密码,该密码是为keytool选项“-keypass”提供的
【讨论】:
以上是关于org.opensaml.common.SAMLRuntimeException:无法获取 SP 签名密钥的主要内容,如果未能解决你的问题,请参考以下文章