2013-03-07 80 views
2

簡短的故事,我的老闆想要爲我們所做的很多應用程序使用單一登錄,並且我爲此需求嘗試CAS。關於CAS服務的javax.net.ssl.SSLHandshakeException

我試圖安裝CAS作爲我的SSO。我從java bin中的keytool生成jks文件。登錄和註銷工作正常,直到我想嘗試添加一些服務。

https://localhost:8443/cas/services/j_acegi_cas_security_check?ticket=ST-2-Ts4EoUqKfeGOGGi1XbXq-cas01.example.org 

此錯誤將出來:

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found 
org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:341) 
org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:305) 
org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:50) 
org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:207) 

所以,我谷歌和嘗試這個事情,但還是失敗了:

我第一件事運行此命令,它的成功:

keytool -genkey -alias localhost -keyalg RSA -keystore C:\Users\User\Documents\keystore.jks -keysize 2048 
keytool -certreq -alias localhost -keystore C:\Users\User\Documents\keystore.jks -file C:\Users\User\Documents\localhost.csr 

將jks文件導入java

keytool -import -trustcacerts -alias localhost -keystore "C:/Program Files/Java/jdk1.7.0/bin/jre/lib/security/cacerts" -file "D:\apache tomcat 6\bin\keystore.jks" 

但錯誤出來:

keytool error: java.lang.Exception: Input not an X.509 certificate 

也嘗試生成X509文件

openssl x509 -in "C:\Users\User\Documents\localhost.csr" -out "C:\Users\User\Documents\localhost.der" -outform DER 

,但這個錯誤出來:

unable to load certificate 
24516:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_li 
b.c:696:Expecting: TRUSTED CERTIFICATE 

請指教,如果任何解決方法我嘗試? PS:在Windows 8 64位上使用tomcat 6。 (這就是爲什麼我總是用我的文檔文件夾,因爲它如果我使用其他地方不工作)

回答

6

嗨,我解決這個我自己在最後...

也許別人需要這個..

  1. 我使用https運行應用程序並輸出jks文件。
  2. 使用瀏覽器查看證書。
  3. 將其導出並保存爲.cer文件
  4. 用java keytool導入它。

這是命令:

keytool -import -trustcacerts -alias localhost -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file "D:/apache tomcat 6/bin/daniel2.cer" 
+0

嗨,丹尼爾,請您簡要介紹一下您遵循的步驟。我有點困惑,因爲即使我也面臨這個問題。謝謝。 – GuruKulki 2015-03-09 15:15:00

2

我有同樣的問題,我就根據你的步驟,但一個步驟解決。 命令後

keytool -genkey -alias localhost -keyalg RSA -keystore C:\Users\User\Documents\keystore.jks -keysize 2048 

它要求您的最後一個名字。名字和姓氏必須是服務器的主機名稱,並且不能是IP地址。我輸入了我真正的第一個姓,並且這是不正確的。