【问题标题】:ssl client authentication without ssl re-negotiation无需 ssl 重新协商的 ssl 客户端身份验证
【发布时间】:2011-09-26 08:48:32
【问题描述】:

在客户端,我在 jdk5u22 上有 Apache HTTP 客户端。在服务器端,我在 jdk6u27 上有 tomcat。

使用此设置,如果我尝试 SSL 客户端身份验证(2 路 SSL),则会导致服务器上出现“javax.net.ssl.SSLHandshakeException: Insecure renegotiation is not allowed”,并且握手失败。如果我在服务器上设置系统属性 sun.security.ssl.allowUnsafeRenegotiation=true 和 sun.security.ssl.allowLegacyHelloMessages=true,它会成功。

根据链接http://www.oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html,这是因为 JRE6u27 具有 RFC 5746 实现,而下面的 JRE5u26 没有此实现,因此两者都不兼容。不幸的是,5u22 是最新的免费提供的 java 5 版本。所以我想知道是否可以在没有 ssl 重新协商的情况下进行 SSL 客户端身份验证。

问候, 小普雷斯

【问题讨论】:

    标签: java ssl httpclient authentication


    【解决方案1】:

    根据 redhat 网站 https://access.redhat.com/kb/docs/DOC-20491#Renegotiations_disabled_in_Apache_TomcatTomcat 可能会要求客户端使用客户端证书身份验证在某些配置中重新协商,例如,以下配置: 初始连接不需要客户端证书,例如: 1.使用JSSE的HTTPS连接器的clientAuth属性设置为 错误的。或者 HTTPS 连接器的 SSLVerifyClient 属性使用 OpenSSL 设置为无。 和 2. Web 应用程序指定 CLIENT-CERT 身份验证方法 应用程序的 web.xml 文件的 login-config 部分。

    因此,为了避免在 tomcat 中重新协商,只需通过为 ssl 设置 clientAuth="true" 来确保整个网站的安全,而不仅仅是其中的一部分。

    希望这对某人有所帮助。

    问候, 小

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 2014-09-15
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2014-07-01
      • 2010-12-05
      • 2015-10-05
      相关资源
      最近更新 更多