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

相关推荐
Net_Walke21 小时前
【网络协议】IoT 设备入网认证机制
arm开发·物联网·网络协议
老坛程序员21 小时前
FastAPI WebSocket 由浅入深的开发范例
websocket·网络协议·fastapi
weixin_4569042721 小时前
UDP端口释放和清理时间分析
网络·网络协议·udp
Net_Walke21 小时前
【网络协议】数字签名与证书
网络·网络协议
2501_915909061 天前
Python 爬虫 HTTPS 实战,requests httpx aiohttp 抓取技巧、证书问题与抓包调试全流程
爬虫·python·ios·小程序·https·uni-app·iphone
北京耐用通信1 天前
一“网”跨协议,万“设”皆可通!耐达讯自动化Modbus TCP转Profibus ,让控制无界,让能源有道。
网络·人工智能·网络协议·自动化·信息与通信
G皮T1 天前
【安全】TLS 协议介绍
安全·http·网络安全·https·ssl·tls·tls 1.3
会开花的二叉树1 天前
上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南
开发语言·c++·http
00后程序员张1 天前
App 上架全流程指南,iOS 应用发布步骤、ipa 文件上传工具、TestFlight 分发与 App Store 审核经验分享
android·ios·小程序·https·uni-app·iphone·webview
2501_916013741 天前
iOS App 上架流程详解,苹果应用发布步骤、App Store 审核规则、ipa 文件上传与测试分发实战经验
android·ios·小程序·https·uni-app·iphone·webview