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

相关推荐
SongYuLong的博客4 小时前
UPnP-AVTransport
网络协议
普普通通的南瓜9 小时前
一年期免费IP证书,为公网IP地址提供HTTPS加密
网络·网络协议·tcp/ip·安全·http·金融·https
云计算练习生10 小时前
渗透测试行业术语扫盲(第一篇)—— 基础网络与协议类术语
网络·网络协议·安全·网络安全·渗透测试·渗透测试术语
普普通通的南瓜11 小时前
无需域名,直通安全:一年期免费IP SSL证书
网络·网络协议·tcp/ip·安全·ssl
青果全球http13 小时前
HTTP代理原理揭秘:如何实现高效数据中转?
网络·网络协议·http
im_AMBER13 小时前
weather-app开发手记 01 HTTP请求基础 | Axios GET 请求
笔记·网络协议·学习·计算机网络·http·axios
张3蜂16 小时前
ip可以伪造吗
网络·网络协议·tcp/ip
打不了嗝 ᥬ᭄17 小时前
【Linux】多路转接 Select , Poll和Epoll
linux·网络·c++·网络协议·http
Hello.Reader17 小时前
从 SSE 到 WebSocket实时 Web 通信的全面解析与实战
前端·websocket·网络协议
chuxinweihui17 小时前
⽹络层IP协议
服务器·网络·网络协议·tcp/ip