版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/104257243
前言
最近在看书的时候,看到一个陌生的小工具 —— Keytool 。经过研究,得知它原来是一个密钥和证书的管理工具,在我们的 JDK 中也自带了这个小工具,而本篇博客主要来介绍如何用 JDK 自带的 Keytool 工具生成 SSL证书,然后将其导入到 Spring Boot 项目中。
按我的理解,其实就是将原来的 HTTP 协议升级成了 HTTPS 协议。
在此之前我们还需要了解一下什么是 SSL证书 和 HTTPS?说到 SSL,它其实是一种安全协议,它的专业名词是 安全套接层,它是一种保障数据在网络上可以安全进行传输的协议。它的好处有很多,不仅可以加密用户的敏感信息,还能提升用户对网站的信任。而 SSH证书 就是遵守着 SSL协议,由受信任的机构颁发的数字证书。
而 HTTPS 是以安全为目标的 HTTP 通道,简单的说它是 HTTP 的安全版,在 HTTP 基础上加入了 SSL 层(安全套接层),使得传输数据更加安全。现在它也被广泛的用于网络上的敏感通讯,比如交易支付方面等。
一、生成证书
获取证书有两种方式:
- 购买证书;
- 使用 JDK 的 Keytool 工具生成证书。
本篇博客将使用第二种方式来生成证书。
1、打开 CMD 命令窗口
keytool -genkey -alias tomcat -keypass 12345678 -storepass 87654321 -validity 360 -keyalg RSA -keystore tomcat.keystore
- 各参数详解
-genkey
:生成指定的密钥文件,若不指定位置,默认会在用户的家目录下(默认文件名是.keystore
);-alias tomcat
:产生别名;-keypass 12345678
:密钥口令;-storepass 87654321
:密钥库口令;-validity 360
:有效期,单位是天;-keyalg RSA
:指定密钥的算法,如:RSA、DSA(默认是DSA);-keystore tomcat.keystore
:指定生成证书的位置和证书名称。
还有个命令是输出 cer 格式的文件,这个文件后续可用于安装证书等,在此只是简单记录一下,与本篇博客的内容无关:
keytool -keystore tomcat.keystore -export -alias tomcat -file tomcat.cer
其中:
-export
参数代表输出,-file
参数代表输出的文件名。
2、填写信息并回车继续
回车后,它会提示你输入一系列信息,这些信息是选填的,不想填写直接回车即可。
直到出现 “是否正确” 的相关信息后,输入
y
回车即可。这时候它会在当前路径(我的路径:C:\
)下生成证书。
二、构建 Spring Boot 项目
构建一个 Spring Boot 的 Web 项目,可以参考: 《SpringBoot入门学习笔记三(HelloWorld)》
构建好 Spring Boot 项目后,我们要找到生成的证书,并将证书放到 Spring Boot 项目中的
src/main/resources
目录下。
1、配置信息
server.ssl.key-store=classpath:tomcat.keystore
server.ssl.key-store-password=87654321
server.ssl.key-password=12345678
server.ssl.key-alias=tomcat
配置信息必须与证书的信息相对应,否则就会报错。
2、启动项目
到此,所有的配置就都搞定了,这个时候 HTTPS 已经开启,我们启动项目。先在 浏览器 访问 http://localhost:8080/demo。
大家会发现访问不到了,我们再用 https://localhost:8080/demo 访问,会出现以下页面,我们点击 “继续浏览此网站” 就能正常看到我们的页面了。