最近在做项目的过程中遇到这样一个需求:项目中的部分请求需要用到HTTPS。由于我之前没有接触过HTTPS,所以先对HTTPS进行了一番了解。后来发现,配置tomcat的SSL其实很简单,只要按照下面的步骤来进行操作就可以了。
- 获得一个SSL证书文件
- 找到tomcat的server.xml文件,进行如下的配置:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="/test.jks" keystorePass="test2016"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
keystoreFile:证书存放的路径。
keystorePass:如果使用了一个与Tomcat预期不同的keystore(和证书)密码,则加入该属性。
clientAuth:如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。
protocol:设定http协议。
sslEnabledProtocols :socket使用的加密/解密协议。
ciphers:此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。
- 在项目的web.xml文件中进行如下配置:
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/test/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
如果你像我一样,只需要部分请求使用HTTPS,那么,中间配置的URL为需要使用HTTPS的URL。如果URL 映射设为 /* ,那么整个应用都是需要用HTTPS进行访问的。
- 进行测试:其实,你使用https://localhost:8443进行访问,将会看到tomcat的默认首页