gpt4 book ai didi

ssl - 当我使用 APR 并且并非所有 Web 部署都使用 CLIENT-CERT 身份验证时,我如何才能在 JBoss 5.1.0.GA 中使用客户端证书身份验证?

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:43 24 4
gpt4 key购买 nike

注意:我将回答我自己的问题...只是想将这个花絮添加到互联网的集体智慧中。

我已经在我的 JBoss 5.1.0.GA 服务器上成功配置了证书身份验证,主要是借助于此页面上的信息:http://docs.jboss.org/jbossas/jboss4guide/r1/html/ch8.chapter.html

我有一个上下文(我们称它为 /openContext )不需要任何身份验证,而另一个上下文(我们称它为 /securedContext )需要客户端证书身份验证(即,它被配置为在web.xml)。当使用 JBoss 的默认 Web 连接器时,它工作得很好。我可以打 http://myhost/openContext并且没有提示我输入证书,但是当我点击 http://myhost/securedContext 时,系统提示我输入客户端证书,正如我所期望的那样。

但是,当我安装 JBossWeb Native并使用 APR 作为我的网络连接器,当我点击 http://myhost/securedContext 时不再提示我输入证书.

我的 APR 连接器配置在 server.xml 中看起来像:

<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}"
scheme="https" secure="true" clientAuth="false"
SSLProtocol="SSLv3+TLSv1"
SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
SSLRandomSeed="/dev/urandom"
SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
SSLCACertificateFile="/etc/pki/tls/certs/clientCAs.crt"
/>

我也试过添加 SSLVerifyClient该配置的参数并将其设置为 optional ,但这会提示在 /openContext 中输入证书和 /securedContext ,这不是我想要的行为。

我如何让具有 APR 的 JBoss 要求对一个 Web 上下文而不是另一个 Web 上下文进行证书身份验证?

最佳答案

对我有用的是添加一个全新的 Web 连接器,并让客户使用该备用端口来保护 Web 上下文。我的连接器配置现在看起来像:

<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}"
scheme="https" secure="true" clientAuth="false"
SSLProtocol="SSLv3+TLSv1"
SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
SSLRandomSeed="/dev/urandom"
SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
/>
<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8543" address="${jboss.bind.address}"
scheme="https" secure="true" clientAuth="true"
SSLProtocol="SSLv3+TLSv1"
SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
SSLRandomSeed="/dev/urandom"
SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
SSLCACertificateFile="/etc/pki/tls/certs/clientCAs.crt"
SSLVerifyClient="require"
/>

现在,如果我点击 http://myhost:8443/openContext,系统不会提示我输入证书,但是当我点击 http://myhost:8543/securedContext ,系统提示我输入证书。当然,我仍然可以使用“错误”端口访问任一 Web 应用程序,但对于我的目的而言,后果可以忽略不计。如果客户端访问 http://myhost:8443/securedContext,他们只会收到 HTTP 身份验证错误。如果客户端点击 http://myhost:8543/openContext,系统会提示他们提供客户端证书。如果他们提供一个,很好(虽然我不在乎你是谁),如果他们不提供或提供无效的,他们会收到 HTTP 身份验证错误(他们应该首先使用正确的端口).

我很确定有另一种方法可以在不需要第二个连接器的情况下通过将 httpd 放在 JBoss 前面并在那里进行一些巧妙的配置来实现这一点,但这对我的目的来说效果很好。

关于ssl - 当我使用 APR 并且并非所有 Web 部署都使用 CLIENT-CERT 身份验证时,我如何才能在 JBoss 5.1.0.GA 中使用客户端证书身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com