1.SSL单向认证:传输过程中对数据进行加密,但不会校验客户端的来源
2.SSL双向认证:如果客户端浏览器没有导入客户端证书,无法访问web系统
一般情况下只需单向认证即可。除非需要非常严格的保密
单向认证配置流程:
1. 生成安全证书
以windows为例,在命令行中执行以下内容:
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore E:\SSL\tomcat.keystore
如果不设置keystore,则会默认生成在users用户目录下,具体参数可以通过--help查看
后面设置密码等步骤按具体情况填写即可
注意「名字与姓氏」需要设置为域名
如果需要的话,可以使用keytool得exportcert命令从keystore中导出证书
也可以使用importcert命令导入证书
2. 配置tomcat
编辑server.xml文件如下部分,原本注释的内容放开,并配置安全证书
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:\SSL\tomcat.keystore"
keystorePass="tomcat" />
此时启动tomcat,即可以https访问localhost:8443
3. 配置web项目
在web.xml中配置以下内容
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/web/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
url-pattern中配置的规则,就是需要使用ssl加密的地址
启动tomcat即可成功访问。