SSL(Secure Sockets Layer,安全套接层)是一种加密通信协议,最早由Netscape Communications公司于1994年提出。它的主要目的是为网络通信提供安全性,防止数据在传输过程中被窃听、篡改或伪造。SSL技术的核心是公钥加密与私钥解密,在此基础上,发展出了TLS(Transport Layer Security,传输层安全)协议,成为现代网络通信的基础安全手段。
在实际应用中,为了确保网络安全,往往需要为网站或服务颁发证书。然而,购买证书的过程较为繁琐,且费用较高。为了解决这一问题,开发者推出了mkcert这个开源工具。
mkcert是一个基于Let’s Encrypt证书颁发机构的命令行工具,可以快速为个人或小型网站生成自签名证书。它支持Windows、macOS和Linux平台,操作简单,只需一键即可生成证书。
通过输出,我们可以看到成功生成了localhost+3.pem证书文件和localhost+3-key.pem私钥文件,只要在 web server 上使用这两个文件就可以了。
server:
ssl:
#开启SSL支持
enabled: true
#PEM编码的SSL证书文件的路径。
certificate: classpath:./ssl/certificate.pem
#SSL证书的PEM编码私钥文件的路径。
certificate-private-key: classpath:./ssl/private-key.pem
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello,SSL!";
}
}
GET https://localhost/hello
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 10
Date: Tue, 16 Jan 2024 05:51:38 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Hello,SSL!
Response code: 200; Time: 443ms; Content length: 10 bytes
spring:
profiles:
active: p12 #指定application-p12.yaml文件生效
server:
ssl:
#开启SSL支持
enabled: true
#psck12证书路径(保存SSL证书的密钥存储的路径(通常是*.jks,*.pfx,*.p12文件)。)
#坑点 文件路径不能出现数字,否则resource的URL解析失败
key-store: classpath:ssl/pkcs/keyStore.p12
#证书密码(用于访问密钥存储中的密钥的密码。)
key-password: changeit
#密钥存储的类型。
key-store-type: PKCS12
port: 443 #使用https默认端口
spring:
application:
name: ssl-p12-test
//获取证书类型
@Value(value = "${spring.application.name}")
private String certificateType;
@GetMapping("/hello")
public String hello() {
return "Hello,SSL of"+certificateType;
}