在Nginx中生成和配置SSL证书以实现安全的HTTPS连接
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
要在 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 支持,以上方法都能满足你的需求,希望这篇文章对你有所帮助!