2011-09-12 64 views
1

原則上,這是一個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 error: java.security.SignatureException:簽名不匹配。

我使用的導入命令是:

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

其中server.crt這是簽署SP證書。

爲什麼我得到這個錯誤,我能做些什麼呢?

我似乎唯一剩下的選項是:

  • 把阿帕奇在Tomcat的前方行駛的IDP和使用它的「optional_no_ca」設置爲可以使用自簽名證書,
  • 買單知名CA簽名證書(不是真的適合證明的概念,雖然)
+0

現在,看起來我們的技術支持可以爲我提供GoDaddy簽名的證書。 – Shadowlands

回答

0

嘛不知道SSO或境內流是誠實的,但這裏有雲:

As best as I can tell, this is because tomcat is not accepting the SP's certificate, which was self-signed.

如果確實存在這個問題,您只需將該證書導入Tomcat的信任庫即可。

Instead I am trying to generate a CA cert, and use that to sign the certificate

我不知道你要在這裏做什麼。它由誰簽名?
默認情況下,cacerts具有可信的所有CA的證書,威瑞信。
另外你在訊息中提到導入命令試圖導入到idp.jks不是cacerts

+0

我將CA證書導入到信任庫(和cacerts文件 - 所以java應該將其視爲受信任的根CA),然後嘗試將簽署的服務器(SP)證書導入到idp.jks密鑰庫中。 CA證書是自簽名的(由我創建)。 – Shadowlands

1

put apache in front of the Tomcat running the IdP and use its "optional_no_ca" setting to be able to use a self-signed certificate,

你不需要在Tomcat中的前阿帕奇,也Shibboleth的人說沒有。

pay for a well-known CA to sign the certificate (not really appropriate for a proof-of-concept, though)

需要一個知名的CA,只是因爲信任鏈,如果你不想要,你永遠不需要付錢。

由於您正在進行概念驗證,因此請嘗試先進行無加密通信。

錯誤是當你做導入? 爲什麼不導入CA證書,而不是僅僅導入特定的SP?

+0

IdP已經建立(以前的PoC),所以加密已經建立,並且對重定向的登錄請求正常工作,但我明白你的觀點。就目前而言,看起來我可以通過我們的技術支持「借」由GoDaddy簽署的證書。 – Shadowlands

相關問題