【发布时间】:2019-06-18 15:54:15
【问题描述】:
我创建了一个 Java servlet。我需要使用双向 SSL 连接来托管它。我获得了两个 .cer 文件来实现这一点。我创建了一个 Java 密钥库以与 Apache tomcat 一起使用来部署我的 servlet。我用于 https 连接的 server.xml 为
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="30580" keystoreFile="SSLConnect.jks" keystorePass="$Actual
password" protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true" sslProtocol="TLS" />
和
我还通过添加在 servlet 中启用了 https
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
到 web.xml 文件。
尽管如此,任何人都可以使用我已将服务部署到的 URL 连接到该服务。由于通过 https 启用 SSL,您是否不需要证书来连接到 URL?我在这里做错了吗?
【问题讨论】:
-
SSL-now-TLS 支持多个选项,但最常见的是,在 Java 中,默认情况下它会验证服务器而不是客户端;见security.stackexchange.com/questions/20803/how-does-ssl-work。如果您想要求客户端身份验证,也称为客户端证书或相互身份验证或双向身份验证,请参阅 SSLHostConfig certificateVerification 或其过时的连接器级等效项。