环境
JDK是jdk1.8
系统centos6.5
生成密钥
第一步:我们切换到jdk的bin目录下运行keytool生成证书和一对秘钥
[root@test1 bin]# ./keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore /root/https.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: test1.com
您的组织单位名称是什么?
[Unknown]: test1.com
您的组织名称是什么?
[Unknown]: test1.com
您所在的城市或区域名称是什么?
[Unknown]: CD
您所在的省/市/自治区名称是什么?
[Unknown]: SC
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=test1.com, OU=test1.com, O=test1.com, L=CD, ST=SC, C=CN是否正确?
[否]: y
输入tomcat的密钥口令
(如果和密钥库口令相同, 按回车):
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /root/https.keystore -destkeystore /root/https.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
[root@test1 bin]# keytool -importkeystore -srckeystore /root/https.keystore -destkeystore /root/https.keystore -deststoretype pkcs12
输入源密钥库口令:
已成功导入别名 tomcat 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
Warning:
已将 "/root/https.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "/root/https.keystore.old" 进行了备份。
注意:您的名字与姓氏的填写:这里可以填写域名,要是填写域名,需要修改本机配置把域名和本机ip绑定
配置tomcat
修改tomcat的conf目录下的server.xml
找到下面这块代码
修改为:
Connector标签中的属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密
测试
通过浏览器访问https://localhost/或者通过ip访问
补充:
1、http自动跳转https的安全配置:
到conf目录下的web.xml。在 后面, 之前,也就是倒数第二段里,加上这样一段:
CONFIDENTIAL: 要保证服务器和客户端之间传输的数据不能够被修改,且不能被第三方查看到
INTEGRAL: 要保证服务器和client之间传输的数据不能够被修改
NONE: 指示容器必须能够在任一的连接上提供数据。(即用HTTP或HTTPS,由客户端来决定)
这步目的是让非ssl的connector跳转到ssl的connector去。所以还需要前往server.xml进行配置:
和
redirectPort改成ssl的connector的端口443,重启tomcat后便会生效。