我一直在尝试在 Tomcat 8 中设置 SSL/TLS 握手。我已经成功完成了所有配置,但是我在使用 CRL/OCSP 时遇到了一些问题。
我需要解决方案:这个
我有几个问题,所以请耐心等待。任何帮助将非常感激。
- tomcat 8 是否允许我们缓存从 CRL 分发点获得的 CRL 文件?通过缓存我的意思是如果网络不可用并且我们启动服务器,我不希望tomcat默认允许所有用户访问(它确实如此),因为CRL分发点不可用。我希望它缓存最后一个可用列表并在现在无法下载 CRL 时使用它。如果可以下载,则更新现有缓存。
我在 server.xml 中配置了以下连接器。
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="2000" clientAuth="want" scheme="https"
keepAliveTimeout="-1" connectionTimeout="900000" compression="on"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,text/javascript,image/jpg,image/ico,image/png,image/jpeg,image/tiff,image/tif"
secure="true" SSLEnabled="true" sslProtocol="TLS" sessionTimeout="30"
truststoreFile="D:\Certs\server.truststore" truststorePass="123456"
keystoreFile="D:\Certs\keystore.pkcs12" keystorePass="password" keystoreType="PKCS12"
crlFile="http://127.0.0.1:8600/getCRLFile/"
maxKeepAliveRequests="200" sslEnabledProtocols= "TLSv1,TLSv1.1,TLSv1.2"
maxHttpHeaderSize="65536" maxPostSize="4194304"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"/>
我可以使用任何 tomcat 配置来实现这一点吗?
- 我找到了一种方法来完成上述任务,我在这里操作了一个 Java 代码!
问题在于,我必须在与此 java 代码握手时发送客户端证书,并根据此代码的回复接受/拒绝证书。我不知道该怎么做。任何帮助都会大有裨益。第二个原因是我更愿意使用 tomcat 配置而不是自定义代码来完成任务 1,因为自定义代码可能会遗漏某些方面。
我可以在不重新启动 tomcat 服务器的情况下从 CRL 分发 URL 中动态选择更新的 CRL 吗?具有上述配置的当前方案在服务器打开时选择一次 CRL 文件,然后它仅使用该副本,即使 URL 上可用的 CRL 列表已更改。
我们可以在连接器中配置多个 CRL 端点吗?Tomcat 将检查它们并根据所有 URL 的组合列表接受/拒绝客户端证书。
- 如果已配置,我能否以与缓存 CRL 列表类似的方式缓存 OCSP 响应?
提前致谢。请随时询问我可能错过的任何细节。