使用 OpenSSL 创建本地开发环境受信任的 HTTPS 证书
在本地开发中,我们经常需要使用 HTTPS 来模拟生产环境,尤其是当项目涉及 OAuth、Service Worker、安全 Cookie 等特性时。
本文将支持以下两个域名:
localhost.host.testdevelop.host.test
准备工作
首先创建一个工作目录,存放所有证书文件:
bash
mkdir ~/certs && cd ~/certs第一步:创建根 CA 证书
根证书用于签署服务器证书,我们只需将根证书添加到系统信任列表,后续由它签发的所有证书都会被浏览器信任。
1. 生成根 CA 私钥
bash
openssl genrsa -out ca.key 20482. 生成根 CA 证书(自签名,有效期 10 年)
bash
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=DevCA/CN=Dev Root CA"第二步:创建服务器证书
1. 生成服务器私钥
bash
openssl genrsa -out server.key 20482. 创建证书签名请求(CSR)配置文件
创建 server.cnf:
ini
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req
[dn]
C = CN
ST = Beijing
L = Beijing
O = Dev
CN = localhost.host.test
[v3_req]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost.host.test
DNS.2 = develop.host.test3. 生成 CSR 并签署证书
bash
openssl req -new -key server.key -out server.csr -config server.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 825 -sha256 -extfile server.cnf -extensions v3_req第三步:安装根证书
Windows
- 双击
ca.crt - 选择"安装证书" → "本地计算机" → "将所有证书放入下列存储"
- 浏览选择"受信任的根证书颁发机构"
macOS
bash
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crtLinux (Ubuntu/Debian)
bash
sudo cp ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates验证
访问 https://localhost.host.test:3000,浏览器应显示安全连接,无需手动信任。
证书文件说明
| 文件 | 用途 |
|---|---|
ca.key | 根 CA 私钥(保管好,不要泄露) |
ca.crt | 根 CA 证书(需安装到系统) |
server.key | 服务器私钥 |
server.crt | 服务器证书(由 CA 签署) |
server.csr | 证书签名请求(中间文件) |
