用户首先安装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证书