大多数情况下,网站访问目标客户并不固定,所以在这里只写了单向的ssl(仅在服务器端安装证书):
1. 首先在CMD中使用cd指令切换到jdk的keytool所在目录:“%JAVAHOME%/bin”
然后运行keytool:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/tomcat.keystore -validity
3650
genkey生成方式,对称或者非对称
-alias:别名
-keyalg:加密方式,默认是DSA
-keystore:产生的SSL证书库存放位置和文件名
-validity
:证书有效期,单位是天。
接下来会提示要求输入keystore的密码以及证书信息。需要注意的是:“您的名字和姓氏是什么?”这个问题后面需要输入的是域名,而不能试IP地址,如果在本地测试用,可以输入localhost。
建议tomcat的密钥口令设置一直,直接按回车。
如果要查看这个keystore:
keytool -list -v-keystoretomcat
-keystore tomcat中“tomcat”是之前设置的别名
2. 设置tomcat
进入tomcat的安装目录,找到conf文件夹,打开server.xml
找到被注释的:
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
去除注释,在这里端口继续使用8443
需要注意的是protocol="org.apache.coyote.http11.Http11Protocol"的写法是版本7中的写法,如果是6的话使用protocol="HTTP/1.1"
具体设置如下:
<Connector
port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:\tomcat.keystore" keystorePass="tomcat"
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_C BC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RS
A_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
/>
clientAuth:指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证 ,必须验证客户端证书。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。
keystoreFile:之前存放ssl证书的目录
keystorePass:生成SSL后设置的密码
此外需要注意的是ciphers,之前设置了ciphers="tomcat",将密码放进去,结果是;浏览器提示不支持的协议,之后改为上文中的值后,chrome和IE均可访问,仅提示不安全。
3.访问时,本地输入https://localhost:8443即可