如何配置jetty以请求指定资源的客户端证书?

时间:2017-02-03 12:34:07

标签: ssl jetty ssl-certificate client-certificates

sslConfig:

<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath">../conf/jetty/etc/keystore</Set>
    <Set name="KeyStorePassword">secretpass</Set>
    <Set name="KeyManagerPassword">test</Set>
    <Set name="TrustStorePath">../conf/jetty/etc/truststore</Set>
    <Set name="TrustStorePassword">secretpass</Set>
    <Set name="EndpointIdentificationAlgorithm"></Set>
    <Set name="NeedClientAuth">true</Set>
    <Set name="WantClientAuth">true</Set>
</New>

将NeedClientAuth设置为true要求客户端为所有资源提供证书。但就我而言,我只想为指定的资源申请证书。

例如,我需要为/ resource1 / *申请证书 并且只使用HTTPS作为/ resource2 / *

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

不可能,因为SSL / TLS协商步骤在实际发出请求之前发生。

任何Web服务器都不能根据请求的资源应用不同的SSL / TLS规则,因为在SSL / TLS协商时尚未发送http请求中存在的信息。

如果这很重要,请在不同的端口上设置2个不同的ServerConnector。

  1. 带有客户端身份验证的ServerConnector - /resource1/*内容从此处提供
  2. 没有客户端身份验证的ServerConnector - 所有其他不需要客户端身份验证要求的Web资源(甚至没有 onclick="javascript:editBook(author,title)" 内容)