项目中我们可能会用到HTTPS的访问请求,那么在JavaWeb项目中我们怎么将请求时的http变为https,其实https相较于http就是访问协议的不同,多了一个认证证书;
那我们就来看看这个证书是怎么创建的:
其实JDK早已经为我们提供了解决办法: C:\Program Files\Java\jdk1.8.0_131\bin\keytool.exe
生成证书方式(cmd命令):
HTTPS :
JDK证书制造工具: C:\Program Files\Java\jdk1.8.0_131\bin\keytool.exe
1,cmd代码:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "test.keystore"
输入密钥库口令: 123456
姓氏(CN): localhost
单位名称(OU): gy
组织名称(O): gy
城市或区域(L): my
省/市/自治区(ST): sx
国家(C): cn
是否正确: y
tomcat口令: 123456
说明:
密钥 库 密码: 123456
证书条目密码: 123456
功能:
创建一个别名为tomcat的证书条目,该条目存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。
参数说明:
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
注意:
1."名字与姓氏"应该是域名,若输成了姓名,和真正运行的时候域名不符,会出问题;
2.再次输入密码,第一次输入的是密钥库(keystore)的密码,第二次输入的是证书条目的密码;
3.这里所说的证书库和密钥库是等同的(个人观点);
2,cmd查看证书目录:
keytool -list -keystore test.keystore
密钥库口令: 123456
查询到:
您的密钥库包含 1 个条目
tomcat, 2018-1-12, PrivateKeyEntry,
证书指纹 (SHA1): DC:59:14:41:71:20:D0:D3:64:3B:66:C7:47:F2:60:6B:2D:55:25:15
3,cmd导出证书文件:
keytool -export -alias tomcat -file tomcat.jks -keystore test.keystore
密钥库口令: 123456
功能:
将名为 test.keystore 的证书库中别名为 tomcat 的证书条目导出到证书文件 tomcat.crt 中;
4,cmd导入证书的信息:
keytool -import -keystore test_cacerts -file tomcat.crt
密钥库口令: 123456
功能:
将证书文件 tomcat.crt 导入到名为 test_cacerts 的证书库中;
5,cmd查看证书信息:
keytool -printcert -file "tomcat.crt"
密钥库口令: 123456
功能:
查看证书文件 tomcat.crt 的信息;
查看证书库信息:
keytool -list -v -keystore test.keystore
密钥库口令: 123456
功能:
查看证书库文件 test.keystore 的信息;
6,cmd删除密钥库中的条目:
(1),keytool -list -keystore test.keystore
密钥库口令: 123456
功能: 删除所有条目;
(2),keytool -delete -keystore test.keystore -alias tomcat
密钥库口令: 123456
功能: 删除tomcat条目;
在WEB项目引用的Tomcat启动器的配置文件 server.xml 中修改:
<!-- 将以前的HTTP配置注释
<Connector URIEncoding="UTF-8"
connectionTimeout="20000"
port="8081"
protocol="HTTP/1.1"
redirectPort="8443"/>
-->
<!-- 打开HTTPS配置,将生成的证书库绑定进去 -->
<Connector SSLEnabled="true" clientAuth="false"
protocol="org.apache.coyote.http11.Http11NioProtocol"
keystoreFile="C:/Users/yvdedu.com/test.keystore" certificateKeyAlias="tomcat"
keystorePass="123456" maxThreads="150" port="8081"
scheme="https" secure="true" sslProtocol="TLS"/>
启动项目成功,就算配置成功了;