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

CAS服务上的javax.net.ssl.SSLHandshakeException,java,ssl,https,single-sign-on,cas,Java,Ssl,Https,Single Sign On,Cas,简而言之,我的老板想对我们制作的许多应用程序使用单一登录,为此我尝试了CAS 我正在尝试将CAS安装为我的SSO。我从javabin中的keytool生成jks文件。登录和注销工作正常,直到我想尝试添加一些服务 https://localhost:8443/cas/services/j_acegi_cas_security_check?ticket=ST-2-Ts4EoUqKfeGOGGi1XbXq-cas01.example.org 这个错误将会出现: java.lang.RuntimeEx

简而言之,我的老板想对我们制作的许多应用程序使用单一登录,为此我尝试了CAS

我正在尝试将CAS安装为我的SSO。我从javabin中的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)
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
所以我在谷歌上搜索并尝试了这件事,但还是失败了:

我运行此命令并获得成功的第一件事是:

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
但是这个错误出现了:

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)
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。(这就是为什么我总是使用我的文档文件夹,因为如果我在其他地方使用,它将不起作用)

嗨,我终于自己解决了这个问题

也许其他人需要这个

  • 我使用https和我导出的jks文件运行应用程序
  • 使用浏览器查看证书
  • 将其导出并保存到.cer文件中
  • 使用JavaKeyTool导入它
  • 这是命令:

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

    我也遇到了同样的问题,我按照你的步骤解决了,但又多了一步。 命令后

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

    它询问你的姓和名。名字和姓氏必须是服务器的主机名,不能是IP地址。我输入了真实的第一个姓,但不正确。

    嗨,丹尼尔,请你简要介绍一下你遵循的步骤。我有点困惑,因为我也面临着这个问题。谢谢