将证书导入密钥库时“签名不匹配”错误 - 为什么?

时间:2011-09-12 05:52:16

标签: tomcat ssl-certificate keytool

原则上,这是一个关键工具问题,与Shibboleth没有任何关系,但是理解我想要去的地方可能会有所帮助(如果有的话,请跳到粗体中的位Shibboleth的东西对你没什么意义):

我正在尝试设置Shibboleth SSO配置。 IdP已经建立,我已经建立了一个与之交谈的SP。到目前为止(经过多次黑客攻击),如此好 - SP(链接到apache反向代理)拦截对安全资源的调用并正确地重定向到IdP,这提供了一个登录页面。登录后,IdP回复向SP发送令牌。

然后,SP应该联系IdP以将令牌转换为对登录的人有效的属性,但是这里IdP抱怨该消息不符合安全要求。

据我所知,这是因为tomcat不接受自签名的SP证书。

相反,我正在尝试生成CA证书,并使用它来签署证书。我已将CA证书添加到$ JAVA_HOME / jre / lib / security / cacerts中,因此keytool应该信任它,但是当我尝试将签名的SP证书导入密钥库时,我收到错误:

keytool错误:java.security.SignatureException:签名不匹配。

我使用的导入命令是:

keytool -import -v -alias sp_signed_cert -keystore idp.jks -trustcacerts -file server.crt

其中server.crt是签名的SP证书。

为什么我会收到此错误,我该怎么办?

我似乎唯一留下的选择是:

  • 将apache放在运行IdP的Tomcat前面并使用其“optional_no_ca”设置以便能够使用自签名证书,
  • 支付知名CA签署证书的费用(不太适合概念证明)

2 个答案:

答案 0 :(得分:1)

说实话,不知道SSO或IdP,但这里是:

  

尽我所知,这是因为tomcat不接受   SP的证书,是自签名的。

如果这确实是问题,您只需将该证书导入Tomcat的信任库即可。

  

相反,我正在尝试生成CA证书,并使用它来签名   证书

我不知道你在这里要做什么。它由谁签署?
默认情况下,cacerts具有受信任的所有CA的证书,例如威瑞信。
您在帖子中提到的导入命令也是尝试导入到idp.jks而不是cacerts

答案 1 :(得分:1)

  

将apache放在运行IdP的Tomcat前面并使用它   “optional_no_ca”设置为能够使用自签名证书,

你不需要在tomcat面前使用apache,Shibboleth也不会说。

  

支付知名CA签署证书(不是真的   但是,适用于概念验证)

需要一个知名的CA,只是因为o信任链,如果你不想要,你将永远不需要付费。

尝试在没有加密的情况下首先进行通信,因为您正在进行概念验证。

错误是在进行导入时? 为什么不导入CA证书而不是仅导入特定的SP?