利用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协议了。。。

相关推荐
ManageEngine卓豪9 分钟前
如何在IIS中配置HTTP重定向
http·iis·http重定向
这个人需要休息2 小时前
TCP/IP 协议栈
服务器·网络·网络协议·tcp/ip
2501_915921432 小时前
查看iOS App实时日志的正确方式,多工具协同打造高效调试与问题定位体系(2025最新指南)
android·ios·小程序·https·uni-app·iphone·webview
weixin_417190553 小时前
一、UDP以太网帧格式
网络·网络协议·udp
listhi5205 小时前
UDP通信:解决socket连接关闭后缓冲内容未清除的问题
网络·网络协议·udp
Pluchon8 小时前
硅基计划6.0 伍 JavaEE 网络原理
网络·网络协议·学习·tcp/ip·udp·java-ee·信息与通信
せいしゅん青春之我8 小时前
【JavaEE初阶】网络层-IP协议
java·服务器·网络·网络协议·tcp/ip·java-ee
wuk99813 小时前
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
前端·websocket·网络协议
小陈又菜17 小时前
【QT学习之路】网络通信新次元!Qt TCP双侠:Server监听瞬息,Socket连接万变
qt·网络协议·tcp/ip·socket
C2H5OH66617 小时前
Netty详解-02
java·websocket·网络协议·tcp/ip·tomcat·netty·nio