用户首先安装OpenSSL(如果需要),生成自签名证书的命令,包括处理SAN的方法,解释各个参数的作用,安装证书到信任库的简要说明,可能遇到的问题,比如浏览器不信任,需要SAN扩展,下面是为测试环境生成自签名SSL证书的步骤如下:
1. 安装 OpenSSL 工具
Linux/macOS:通常已预装,若未安装可通过包管理器安装(如 apt-get install openssl 或 brew install openssl)。
Windows:下载 OpenSSL for Windows 或通过 Chocolatey 安装(choco install openssl)。
2. 生成自签名证书(单命令简化版)
运行以下命令一步生成私钥和证书(含SAN扩展):
bash
openssl req -x509 \
newkey rsa:2048 \
keyout key.pem \
out cert.pem \
days 365 \
nodes \
subj "/C=XX/ST=StateName/L=CityName/O=Company/CN=localhost" \
addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
参数说明:
x509:生成自签名证书。
newkey rsa:2048:生成RSA 2048位私钥。
keyout 和 -out:私钥和证书的输出路径。
days 365:有效期(天)。
nodes:私钥不加密(测试环境适用)。
subj:证书主题(按需替换 /C=国家/ST=州/L=城市/O=组织/CN=域名)。
addext:添加SAN扩展(支持现代浏览器)。
3. 通过配置文件生成(兼容旧版OpenSSL)
若 -addext 不可用,需配置文件:
步骤:
创建 openssl.cnf 文件:
ini
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
countryName = Country (2-letter code)
countryName_default = XX
stateOrProvinceName = State
stateOrProvinceName_default = StateName
localityName = City
localityName_default = CityName
organizationName = Organization
organizationName_default = Company
commonName = Common Name
commonName_default = localhost
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
运行命令生成证书:
bash
openssl req -x509 \
newkey rsa:2048 \
keyout key.pem \
out cert.pem \
days 365 \
nodes \
config openssl.cnf
4. 验证证书内容
检查证书是否包含SAN信息:
bash
openssl x509 -in cert.pem -text -noout | grep "Subject Alternative Name"
5. 在服务器中配置证书
将生成的 key.pem(私钥)和 cert.pem(证书)配置到Web服务器:
Nginx:
nginx
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
Apache:
apache
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
</VirtualHost>
Node.js(Express):
javascript
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, app).listen(443);
6. 信任证书(可选)
避免浏览器警告,将证书添加到系统信任库:
Windows:双击 cert.pem → 选择“安装证书” → 选择“本地计算机” → 存入“受信任的根证书颁发机构”。
macOS:
bash
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain cert.pem
Linux(Chrome):复制证书到 /usr/local/share/ca-certificates/,运行 sudo update-ca-certificates。
注意三个事项
仅限测试环境:自签名证书不被公共CA信任,不可用于生产环境。
证书过期:默认有效期365天,需定期更新。
域名/IP匹配:确保证书中的 CN 和 SAN 与测试环境地址一致。
客户通过以上几个步骤,就可为测试环境快速生成并部署自签名SSL证书。