【问题标题】:javax.net.ssl.SSLHandshakeException on CAS ServicesCAS 服务上的 javax.net.ssl.SSLHandshakeException
【发布时间】:2013-03-07 09:33:09
【问题描述】:

简而言之,我的老板想为我们制作的许多应用程序使用单一登录,我尝试使用 CAS 来满足这个需求。

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

【问题讨论】:

    标签: java ssl https single-sign-on cas


    【解决方案1】:

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

    也许其他人需要这个..

    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"
    

    【讨论】:

    • 嗨,Daniel,您能否简要介绍一下您遵循的步骤。我有点困惑,因为即使我也面临这个问题。谢谢。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多