利用keytool实现https协议(生成自签名证书)

利用keytool实现https协议(生成自签名证书)

什么是https 协议?

https(安全超文本传输协议)是 HTTP 的安全版本 ,通过 SSL/TLS 加密技术,在客户端(如浏览器)和服务器之间建立加密通信通道 ,确保数据传输的机密性、完整性和身份真实性。

与http 的区别:

特性 HTTP HTTPS
加密 ❌ 明文传输,数据可被窃听 ✅ 加密传输(SSL/TLS),防窃听
数据完整性 ❌ 数据可被篡改(中间人攻击) ✅ 校验机制防止篡改
身份验证 ❌ 无法验证服务器身份 ✅ 证书验证服务器真实性(防钓鱼)
性能 ⚡ 更快(无加密开销) ⚡ 稍慢(加密/解密消耗资源)
SEO 影响 ❌ 搜索引擎排名可能降低 ✅ 谷歌等优先收录 HTTPS 网站
协议层 应用层协议 HTTP + SSL/TLS(传输层安全)

HTTPS 如何工作?

1 、SSL/TLS 握手

客户端访问 HTTPS 网站时,服务器发送数字证书(含公钥)。

浏览器验证证书有效性(如颁发机构、过期时间、域名匹配)。

2 、密钥交换

通过非对称加密(如 RSA)协商一个临时对称密钥。

3 、加密通信

后续数据传输使用对称加密(如 AES),保证效率和安全。

那么如何实现将http 变为安全的https 协议?

生成自签名证书(开发环境适用)

使用 keytool(Java 自带工具)

一、交互式输入:

在后端项目终端中输入

keytool -genkeypair -alias yourdomain -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365 -storetype PKCS12

接着往下输入信息即可。

在 Vue + Spring Boot 项目中启用 HTTPS,需要生成 SSL/TLS 证书(如自签名证书或 CA 签名证书)。以下是详细步骤:

参数说明:

  • -alias yourdomain:证书别名(可自定义)。
  • -keyalg RSA:加密算法(推荐 RSA 或 ECC)。
  • -keysize 2048:密钥长度(至少 2048 位)。
  • -keystore keystore.p12:生成的密钥库文件名。
  • -validity 365:证书有效期(天)。
  • -storetype PKCS12:密钥库格式(推荐 PKCS12,兼容性强)。

二、不交互式

keytool -genkeypair -alias yourdomain -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365 -storetype PKCS12 -dname "CN=localhost, OU=YourDept, O=YourOrg, L=Beijing, ST=Beijing, C=CN" -storepass yourpassword

其中CN=localhost为地址, 将yourpassword 改为密码,

结束后会出现一个文件:

keystore.p12

将其移动到resources文件夹下,

在application.properties配置里写:

复制代码
server.ssl.enabled=true

#文件位置
server.ssl.key-store=classpath:keystore.p12

#密码  注意要和之前设置的一致
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12

最后重启springboot项目,

在前端的项目里(我的是vue项目),

在跨域中设置:

复制代码
module.exports = {

  devServer: {

    proxy: {

      '/api': {

        //注意这里要用https,否则会报错

        target: 'https://localhost:9000',

        changeOrigin: true,

        secure: false, // 忽略自签名证书

        pathRewrite: { '^/api': '' }

      }

    }

  }

}

前端做一个请求,在后端查看日志:

可以看到已经是https协议了。。。

相关推荐
Lsetea5 小时前
curl指定CA目录仍报证书不受信任:--capath与OpenSSL rehash排查
运维·https·ssl·openssl·curl
杨福宇7 小时前
100BASE T1以太网实时控制的危机V3.21 ——辅助自动驾驶难达标
网络·网络协议·安全·自动驾驶·汽车
Zelman11 小时前
协议栈数据流全景分析
网络协议·tcp/ip·https
Lsetea16 小时前
OpenSSL报path length constraint exceeded:CA层级与pathlen排查
运维·https·ssl证书·openssl·证书链
傲世仙尊19 小时前
HTTP起步-URL域名解析与协议的本质
网络·网络协议·http
Lsetea19 小时前
OpenSSL s_client退出码为0却证书验证失败:严格校验与Shell管道排查
https·shell·ssl证书·openssl·tls
ControlRookie19 小时前
第27篇_综合排障|从现象反查状态、错误码、指标和连接快照
http·codesys·plc通信
wdfk_prog20 小时前
Wi-Fi Direct 教程 05:control socket 与 eloop——P2P_FIND 怎样进入 wpa_supplicant 命令解析器
运维·服务器·后端·网络协议·ubuntu·p2p·wifi-direct
Lsetea21 小时前
OpenSSL报permitted subtree violation:证书SAN与CA名称约束排查
运维·https·ssl证书·openssl·证书链
ITxiaobing20231 天前
自研 IP 库与 AppsFlyer 判定不一致的排查实践
网络·网络协议·tcp/ip