CAS服务上的javax.net.ssl.SSLHandshakeException

Dan*_*tus 2 java ssl https cas single-sign-on

简短的故事,我的老板想要为我们制作的许多应用程序使用单一登录,我尝试CAS来满足这种需求.

我正在尝试安装CAS作为我的SSO.我从java bin中的keytool生成jks文件.登录和注销工作正常,直到我想尝试添加一些服务.

https://localhost:8443/cas/services/j_acegi_cas_security_check?ticket=ST-2-Ts4EoUqKfeGOGGi1XbXq-cas01.example.org
Run Code Online (Sandbox Code Playgroud)

此错误将出现:

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)
Run Code Online (Sandbox Code Playgroud)

所以我谷歌尝试这件事但仍然失败:

首先我运行此命令并成功:

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
Run Code Online (Sandbox Code Playgroud)

将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"
Run Code Online (Sandbox Code Playgroud)

但是出现了一个错误:

keytool error: java.lang.Exception: Input not an X.509 certificate
Run Code Online (Sandbox Code Playgroud)

也尝试生成x509文件

openssl x509 -in "C:\Users\User\Documents\localhost.csr" -out "C:\Users\User\Documents\localhost.der" -outform DER
Run Code Online (Sandbox Code Playgroud)

但是这个错误出来了:

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
Run Code Online (Sandbox Code Playgroud)

如果我能尝试任何解决方案,请建议吗?

PS:在Windows 8 64位上使用tomcat 6.(这就是为什么我总是使用我的文档文件夹,因为如果我在其他地方使用它不起作用)

Dan*_*tus 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"
Run Code Online (Sandbox Code Playgroud)