Skip to content

使用 OpenSSL 创建本地开发环境受信任的 HTTPS 证书

在本地开发中,我们经常需要使用 HTTPS 来模拟生产环境,尤其是当项目涉及 OAuth、Service Worker、安全 Cookie 等特性时。

本文将支持以下两个域名:

  • localhost.host.test
  • develop.host.test

准备工作

首先创建一个工作目录,存放所有证书文件:

bash
mkdir ~/certs && cd ~/certs

第一步:创建根 CA 证书

根证书用于签署服务器证书,我们只需将根证书添加到系统信任列表,后续由它签发的所有证书都会被浏览器信任。

1. 生成根 CA 私钥

bash
openssl genrsa -out ca.key 2048

2. 生成根 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 2048

2. 创建证书签名请求(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.test

3. 生成 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

  1. 双击 ca.crt
  2. 选择"安装证书" → "本地计算机" → "将所有证书放入下列存储"
  3. 浏览选择"受信任的根证书颁发机构"

macOS

bash
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

Linux (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证书签名请求(中间文件)