mac开发中必须用openssl生成含san的自签名证书以启用https:先运行openssl version验证工具,若报command not found则brew install openssl;推荐一步生成命令openssl req -x509 -newkey rsa:2048 -nodes -keyout localhost.key -out localhost.crt -days 3650 -subj "/cn=localhost" -addext "subjectaltname = dns:localhost, ip:127.0.0.1, ip:::1",再用openssl x509 -in localhost.crt -text -noout | grep -a1 "subject alternative name"验证san是否生效。

Mac开发中需要为localhost或测试域名启用HTTPS时,必须用命令行快速生成自签名SSL证书,否则浏览器会拦截连接、Node.js服务无法启用TLS、Webpack Dev Server报错ERR_SSL_PROTOCOL_ERROR。
验证OpenSSL可用性
打开终端,执行:openssl version。若输出类似 LibreSSL 3.3.6 或 OpenSSL 3.0.13,说明工具就绪;若提示 command not found,需先运行 brew install openssl 安装完整版——系统自带的 LibreSSL 在生成带 SAN 的证书时可能缺失 -addext 参数支持。
一步生成含SAN的证书(推荐)
这一步直接产出可被现代浏览器接受的证书,无需额外配置文件,适用于 localhost、127.0.0.1 和 ::1:
① 创建证书存放目录并进入:mkdir -p ~/certs && cd ~/certs
② 执行单行命令生成私钥与证书:openssl req -x509 -newkey rsa:2048 -nodes -keyout localhost.key -out localhost.crt -days 3650 -subj "/CN=localhost" -addext "subjectAltName = DNS:localhost, IP:127.0.0.1, IP:::1"
⚠️ 注意:macOS 13+ 的 LibreSSL 默认不支持 -addext,若报错 unknown option,请改用 Homebrew 安装的 OpenSSL,执行前先运行 export PATH="/opt/homebrew/opt/openssl/bin:$PATH"(Apple Silicon)或 export PATH="/usr/local/opt/openssl/bin:$PATH"(Intel)。
③ 验证 SAN 是否写入成功:openssl x509 -in localhost.crt -text -noout | grep -A1 "Subject Alternative Name",应看到三行匹配结果。
分步生成(适配老旧环境或需复用私钥)
方法一:先建密钥,再签发带扩展的证书
生成私钥:openssl genrsa -out dev.key 2048
生成带 SAN 的自签名证书:openssl req -x509 -new -nodes -key dev.key -sha256 -days 3650 -out dev.crt -subj "/CN=dev.example.com" -addext "subjectAltName = DNS:dev.example.com, DNS:api.dev.example.com"
方法二:用配置文件方式(兼容 LibreSSL)
创建临时配置文件:
cat > san.cnf [req]<br>distinguished_name = req_distinguished_name<br>x509_extensions = v3_req<br>[req_distinguished_name]<br>[v3_req]<br>subjectAltName = @alt_names<br>[alt_names]<br>DNS.1 = localhost<br>IP.1 = 127.0.0.1<br>EOF
执行签发:openssl req -x509 -newkey rsa:2048 -nodes -keyout local.key -out local.crt -days 3650 -config san.cnf -subj "/CN=localhost"
【关键】生成后立即删除 san.cnf 文件,避免敏感配置残留
导入钥匙串并设为始终信任
双击 localhost.crt → 钥匙串访问自动打开 → 左侧选“系统” → 点击“添加”。
在右侧列表中找到“localhost”条目 → 双击打开 → 展开“信任”→ 展开“安全策略”→ 下拉菜单选“始终信任”→ 关闭窗口 → 输入管理员密码确认。
重启 Safari 或 Chrome,访问 https://localhost 即不再弹出警告。











