一、创建自签名证书(仅用于测试)
如果您只是在开发或测试环境中使用 SSL,可以生成自签名证书。请按照以下步骤生成并配置自签名证书。
- 生成自签名证书
生成密钥文件和证书签名请求(CSR):
mkdir -p /usr/local/nginx/ssl/private
mkdir -p /usr/local/nginx/ssl/certs
openssl genpkey -algorithm RSA -out /usr/local/nginx/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048
生成一个 2048 位的 RSA 私钥文件
openssl req -new -key /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.csr
基于已生成的私钥,创建证书签名请求文件(CSR)
其他字段说明(一般在用 openssl req -new -key ... 生成 CSR 时会问)
Country Name (2 letter code): 国家代码(必须 2 位,例如 CN、US)
State or Province Name: 省/州全名,例如 Beijing
Locality Name: 城市,例如 Beijing
Organization Name: 公司或组织名,例如 MyCompany Ltd
Organizational Unit Name: 部门名,例如 IT Department(可留空)
Common Name (e.g. server FQDN): 你的域名,例如 example.com
Email Address: 邮箱地址,例如 admin@example.com
系统会提示你输入一些信息,如国家、组织等。
生成自签名证书:
openssl x509 -req -days 365 -in /usr/local/nginx/ssl/certs/nginx-selfsigned.csr -signkey /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.crt
验证证书生成是否成功:
证书应该已经保存在 /usr/local/nginx/ssl/certs/nginx-selfsigned.crt
,密钥文件保存在
/usr/local/nginx/ssl/private/nginx-selfsigned.key`。
二、配置 Nginx 启用 SSL/TLS
2.1 编辑 Nginx 配置文件
编辑 Nginx 配置文件并启用 SSL:
vim /usr/local/nginx/conf/nginx.conf
2.2 配置 SSL 证书路径
在 Nginx 配置中添加以下内容:
server {
listen 443 ssl;
server_name benet.com www.benet.com;
ssl_certificate /usr/local/nginx/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /usr/local/nginx/ssl/private/nginx-selfsigned.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
解释:
listen 443 ssl;
:告诉 Nginx 监听 HTTPS(端口 443)。ssl_certificate
和ssl_certificate_key
:指定 SSL 证书和密钥的路径。ssl_protocols TLSv1.2 TLSv1.3;
:只启用 TLS 1.2 和 TLS 1.3,禁用 SSL 和 TLS 1.0/1.1。ssl_ciphers
:定义加密套件。可以根据安全需求选择合适的加密方法。ssl_prefer_server_ciphers on;
:强制服务器优先选择加密套件。
三、测试
使用https://[ip地址]访问测试
出现不被信任可点击高级继续访问,证明配置成功