Tomcat &引用;签名与“不匹配”;将证书导入密钥库时出错-为什么?

Tomcat &引用;签名与“不匹配”;将证书导入密钥库时出错-为什么?,tomcat,ssl-certificate,keytool,Tomcat,Ssl Certificate,Keytool,原则上,这是一个关键工具问题,与Shibboleth无关,但了解我的目的可能会有所帮助(如果Shibboleth的内容对您没有任何意义,请跳到粗体部分): 我正在尝试设置Shibboleth SSO配置。IdP已经建立,我已经建立了一个SP与之对话。到目前为止(经过多次黑客攻击),很好-SP(链接到apache反向代理)拦截对安全资源的调用,并正确重定向到IdP,这将显示一个登录页面。登录后,IdP会回复并向SP发送令牌 然后,SP应联系IdP,以将令牌转换为对登录者有效的属性,但在此,IdP抱

原则上,这是一个关键工具问题,与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前面,并使用其“可选的\u no\u ca”设置来使用自签名证书
  • 支付知名CA签署证书的费用(但并不真正适合概念验证)

老实说,我们不知道SSO或IdP,但下面是:

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

如果这确实是问题所在,那么您所要做的就是将该证书导入Tomcat的信任库

相反,我尝试生成一个CA证书,并使用它来签署证书 证书

我不知道你在这里想干什么。由谁签字?
默认情况下,cacerts拥有所有受信任CA的证书,例如Verisign。
另外,您在帖子中提到的import命令正试图导入到
idp.jks
而不是
cacerts

将apache放在运行IdP的Tomcat前面,并使用其 “可选的\u no\u ca”设置,以便能够使用自签名证书

你不需要在tomcat面前使用apache,Shibboleth的人也说不需要

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

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

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

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

IdP已经设置好了(以前的PoC),所以加密已经设置好了,可以很好地处理重定向的登录请求,但我同意你的观点。目前看来,我可以通过我们的技术支持“借用”GoDaddy签名的证书。目前看来,我们的技术支持可以为我提供GoDaddy签名的证书。我将CA证书导入到信任库(以及cacerts文件-因此java应该将其视为受信任的根CA),然后尝试导入签名服务器(SP)证书进入idp.jks密钥库。CA证书是自签名的(由我创建)。