在Nginx中生成和配置SSL证书以实现安全的HTTPS连接
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
要在 Nginx 中生成和配置 SSL 证书以实现安全的 HTTPS 连接,首先可以使用 OpenSSL 生成自签名证书或通过 Let's Encrypt 获取免费证书,安装并配置 Nginx 后,在服务器块中添加listen 443 ssl;,并使用ssl_certificate和ssl_certificate_key指令指定证书路径,确保正确设置ssl_protocols和ssl_ciphers以增强安全性,重启 Nginx 使配置生效,即可启用 HTTPS 安全连接。
随着互联网的发展,越来越多的网站开始采用 HTTPS 协议来保护用户数据的安全,HTTPS 是通过 SSL/TLS 协议加密传输数据的一种方式,能够有效防止中间人攻击和数据窃听,本文将详细介绍如何在 Nginx 中生成自签名证书,如何使用 Let's Encrypt 获取免费的 SSL 证书,并最终完成 Nginx 的 HTTPS 配置。
SSL(Secure Sockets Layer) 是一种早期的网络通信协议,用于加密客户端与服务器之间的通信,由于其存在一些安全漏洞,SSL 后来被更新为更安全的 TLS(Transport Layer Security),TLS 目前广泛应用于 Web 浏览器和其他应用程序中,成为主流的安全协议。
当一个网站启用 HTTPS 时,浏览器会向服务器发送一个握手请求,服务器会回应一个包含公钥和数字证书的响应,证书由受信任的证书颁发机构(CA)签发,确保网站的身份信息真实可靠,随后,双方通过密钥交换算法建立一条加密通道,实现安全的数据传输。
自签名证书的生成
自签名证书是由你自己签署的,适用于开发和测试环境,虽然它们不能被浏览器默认信任,但在本地开发中非常有用,以下是生成自签名证书的步骤:
安装 OpenSSL
OpenSSL 是一个强大的密码学库,用于生成私钥、CSR(Certificate Signing Request)和自签名证书,安装 OpenSSL 工具包:
sudo apt-get update && sudo apt-get install -y openssl
创建私钥
生成一个 2048 位长的 RSA 私钥文件:
openssl genrsa -out server.key 2048
这条命令会在当前目录下创建一个名为 server.key 的文件,其中包含了服务器的私钥。
创建 CSR 文件
有了私钥后,我们需要创建一个 CSR 文件,它包含了服务器的公开信息,如域名、组织名称等,运行以下命令:
openssl req -new -key server.key -out server.csr
系统会提示你输入一些信息,包括国家代码、州/省名、城市名、公司名、部门名和电子邮件地址等,这些信息将出现在最终生成的证书中。
生成自签名证书
最后一步是根据 CSR 文件生成自签名证书:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
这里的 -days 365 参数表示该证书的有效期为一年,执行完成后,在当前目录下应该可以看到一个新的文件 server.crt,这就是我们的自签名证书。
配置 Nginx 使用自签名证书
编辑你的 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default),添加或修改如下内容:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
# 其他配置...
}
请确保将 /path/to/server.crt 和 /path/to/server.key 替换为你实际存放证书和密钥的位置,然后重启 Nginx 服务使更改生效:
sudo systemctl restart nginx
访问 https://yourdomain.com,你应该能看到一个带有警告标志的页面,因为浏览器不信任这个自签名证书,对于开发环境来说这是可以接受的,但在生产环境中还是建议使用受信任的 CA 签署的证书。
使用 Let's Encrypt 获取免费 SSL 证书
Let's Encrypt 是一个由非营利组织 Internet Security Research Group (ISRG) 运营的自动化公共证书颁发机构,可以免费为网站提供有效的 SSL 证书,并支持自动续订。
安装 Certbot
Certbot 是一个开源工具,可以帮助我们轻松地从 Let's Encrypt 获取并安装 SSL 证书,安装必要的依赖项:
sudo apt-get install -y software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
申请证书
现在我们可以使用 Certbot 来获取证书了,运行以下命令:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
这里 -d yourdomain.com 表示我们要为 yourdomain.com 和 www.yourdomain.com 申请证书,Certbot 会自动修改 Nginx 配置并重启服务。
自动续订
Let's Encrypt 的证书有效期为三个月,因此需要定期续订,幸运的是,Certbot 已经为我们处理好了这一点,只需设置一个 cron 任务即可:
sudo crontab -e
添加以下行以每两个月检查一次证书是否需要更新:
0 0 1 * * /usr/bin/certbot renew --quiet
这样就可以确保你的证书始终处于有效状态。
本文详细介绍了如何在 Nginx 中生成自签名证书,如何使用 Let's Encrypt 获取免费的 SSL 证书,并完成了相应的配置工作,无论是快速搭建一个本地测试环境,还是为生产环境中的网站添加 HTTPS 支持,以上方法都能满足你的需求,希望这篇文章对你有所帮助!


