SSL配置:
<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/* 申请证书 并且只对/resource2/* 使用 HTTPS
我怎样才能做到这一点?
最佳答案
不可能,因为 SSL/TLS 协商步骤发生在实际发出请求之前。
没有 Web 服务器可以根据请求的资源应用不同的 SSL/TLS 规则,因为在 SSL/TLS 协商时,HTTP 请求中的信息甚至还没有发送。
如果这很重要,请在不同的端口上设置 2 个不同的 ServerConnector。
- ServerConnector with Client Auth -
/resource1/*
内容从这里提供 - 没有客户端身份验证的 ServerConnector - 所有其他不需要客户端身份验证要求的网络资源(甚至没有
/resource1/*
内容)
关于ssl - 如何配置jetty为指定资源请求客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024458/