生成自签名证书
1. 生成私钥
生成一个新的私钥:
复制代码
openssl genrsa -out /path/to/your/localhost.key 2048
2. 创建证书签名请求 (CSR)
使用刚生成的私钥创建一个证书签名请求 (CSR),并指定 IP 地址作为 CN
(Common Name):
openssl req -new -key /path/to/your/localhost.key -out /path/to/your/localhost.csr -subj "/CN=200.116.20.1"
3. 创建一个配置文件用于生成自签名证书
创建一个名为 openssl.cnf
的配置文件,内容如下:
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[ req_distinguished_name ]
CN = 200.116.20.1
[ v3_req ]
subjectAltName = @alt_names
[ alt_names ]
IP.1 = 200.116.20.1
将此文件保存到一个方便的位置,例如 /path/to/your/openssl.cnf
。
4. 生成自签名证书
使用配置文件和私钥生成自签名证书:
openssl x509 -req -in /path/to/your/localhost.csr -signkey /path/to/your/localhost.key -out /path/to/your/localhost.crt -days 365 -extfile /path/to/your/openssl.cnf -extensions v3_req
验证证书
你可以使用 openssl
查看生成的证书信息,确保包含正确的 IP 地址:
openssl x509 -in /path/to/your/localhost.crt -text -noout
你应该在输出中看到 Subject
字段包含
CN=200.116.20.1
,以及
X509v3 Subject Alternative Name
字段
包含 IP Address:200.116.20.1
。
配置 Nginx
接下来,配置 Nginx 使用生成的自签名证书和私钥。
1. 编辑 Nginx 配置文件
将以下配置添加到你的 Nginx 配置文件中:
server {
listen 443 ssl;
server_name 200.116.20.1;
ssl_certificate /path/to/your/localhost.crt; ssl_certificate_key /path/to/your/localhost.key; ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://target.example.com;
proxy_ssl_verify off; # 如果目标服务器使用自签名证书,可以关闭验证 proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
}
}
确保将路径 /path/to/your/localhost.crt
和 /path/to/your/localhost.key
替换为实际的文件路径。
2. 重启 Nginx
保存配置文件并重启 Nginx:
sudo systemctl restart nginx