Nginx SSL 获取 SSL/TLS 证书(仅用于测试)
文章目录
- 一、创建自签名证书(仅用于测试)
- 二、配置 Nginx 启用 SSL/TLS
- 2.1 编辑 Nginx 配置文件
- 2.2 配置 SSL 证书路径
- 三、测试
一、创建自签名证书(仅用于测试)
如果您只是在开发或测试环境中使用 SSL,可以生成自签名证书。请按照以下步骤生成并配置自签名证书。
- 生成自签名证书
生成密钥文件和证书签名请求(CSR):
mkdir -p /usr/local/nginx/ssl/private
mkdir -p /usr/local/nginx/ssl/certsopenssl 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: 省/州全名,例如 BeijingLocality Name: 城市,例如 BeijingOrganization Name: 公司或组织名,例如 MyCompany LtdOrganizational Unit Name: 部门名,例如 IT Department(可留空)Common Name (e.g. server FQDN): 你的域名,例如 example.comEmail 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地址]访问测试
出现不被信任可点击高级继续访问,证明配置成功