自签名证书实现HTTPS协议
适用场景
- 开发/测试、内网环境、临时用途
- 正式环境请使用 CA证书
自签名证书与CA证书区别
特性 | 自签名证书(Self-Signed) | 受信任证书(CA-Signed) |
---|---|---|
颁发者 | 自己生成,无第三方机构 | 由受信任的证书颁发机构(CA)如 Let’s Encrypt、DigiCert 签发 |
浏览器信任 | ❌ 默认不信任,显示警告(需手动安装) | ✅ 自动信任,无警告 |
适用场景 | 开发/测试、内网环境、临时用途 | 生产环境、公开网站、商业服务 |
成本 | 免费 | 免费(Let’s Encrypt)或付费(企业级CA) |
有效期 | 可自定义(通常较长) | 通常较短(如90天,需定期续签) |
吊销机制 | ❌ 无吊销列表(CRL/OCSP) | ✅ 支持吊销,CA可标记失效证书 |
演示环境
- 服务端:Linux服务器(以
172.25.22.4
为例) - 客户端(Web):本地
生成自签名证书(bashshell)
# 生成openssl配置文件
$ vim openssl.conf
######################## 配置文件START #########################################
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no[req_distinguished_name]
CN = 172.25.22.4[v3_req]
subjectAltName = IP:172.25.22.4
######################## 配置文件END ########################################## 生成证书
$ openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \-keyout key.pem -out cert.pem \-config openssl.cnf# 验证SAN是否已正确注入
$ openssl x509 -in cert.pem -text -noout | grep -A 1 "Subject Alternative Name"
############### 输出以下内容证明已正确注入 ##########################X509v3 Subject Alternative Name:IP Address:172.25.22.4
############### END ########################### 转换为PFX格式,密码为123456
openssl pkcs12 -export -out keystore.pfx -inkey key.pem -in cert.pem -passout pass:123456 -name "server-cert"# 查看证书文件
$ ls
cert.pem key.pem keystore.pfx openssl.cnf
服务端配置
服务端使用的框架为 Springboot
- 将
keystore.pfx
文件放到/resource/SSLKey/
目录下; - 配置文件新增配置:
#证书配置
server:# SSLssl:enabled: truekey-store: classpath:SSLKey/keystore.pfxkey-store-type: PKCS12key-store-password: 123456
- 验证
https
请求:curl -k https://172.25.22.4:8889/your-api
-k
表示忽略证书验证(仅测试用)。- 如果返回数据,说明后端 HTTPS 配置成功。
前端访问 HTTPS 接口
由于你使用的是 自签名证书,浏览器默认不信任,需要额外处理 让浏览器信任证书。
- 将
cert.pem
下载到本地; - 打开命令行窗口执行以下命令:
$ certutil -addstore -f "Root" your_path\cert.pem
##################### 出现以下提示代表添加成功 ####################
Root "受信任的根证书颁发机构"
签名与公钥匹配
证书 "172.25.22.4" 添加到存储。
CertUtil: -addstore 命令成功完成。
##################### END ####################
至此,自签名证书配置完成!!!