如何在Nginx上启用SSL和TLS 1.3
现在是时候从的'HTTP迁移到HTTPS了。 由于最新的浏览器迭代,尤其适用于网站不安全的情况。 当您将SSL与TLS的一两个结合(请参阅如何在Ubuntu Server 18.04上构建具有TLS支持的Nginx)时,您的站点将获得更高的安全性和性能。
但是如何为Nginx启用SSL? 我将带你走过那个过程。 我将使用自签名证书在Ubuntu Server 18.04上进行演示。 您可能会使用从提供商处购买的证书。 如果是这种情况,请确保编辑步骤以反映这一点。
我们来配置吧。
生成自签名证书
请记住,这仅用于演示目的。 在生产服务器上,您希望使用从信誉良好的证书颁发机构(CA)购买的证书。 但出于测试目的,自签名证书可以正常运行。 这是你如何创建它们。
打开终端窗口并按照以下步骤操作:
1.使用命令sudo openssl genrsa -out ca.key 2048 生成私钥
2.使用命令sudo openssl req -new -key ca.key -out ca.csr 生成CSR
3.使用命令sudo openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt 生成自签名密钥
现在我们需要使用以下命令将新生成的文件复制到正确的位置:
sudo cp ca.crt /etc/ssl/certs/
sudo cp ca.key /etc/ssl/private/
sudo cp ca.csr /etc/ssl/private/
创建Nginx配置
请记住,我们希望通过TLS支持启用SSL。 为此,我们必须使用以下命令创建一个新的Nginx配置文件:
sudo nano /etc/nginx/conf.d/ssl.conf
在该文件中,粘贴以下内容:
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/ssl/certs/ca.crt;
ssl_certificate_key /etc/ssl/private/ca.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:HIGH:!aNULL:!MD5;
}
注意:确保更改根位置以反映您的Nginx安装。 但是,如果您按照步骤构建支持TLS的Nginx,则上述配置应该可行。
保存并关闭文件。 使用以下命令测试新的Nginx配置文件:
sudo nginx -t
您应该看到测试通过了.
重启并测试
现在我们需要重启NGINX。 使用以下命令执行此操作:
sudo systemctl restart nginx
将浏览器指向https://SERVER_IP,您应该看到NGINX欢迎屏幕。 要确保在启用TLS 1.3的情况下交付网站,您可以使用浏览器的内置工具。 例如,在Firefox中,打开页面,然后单击安全按钮(地址栏左侧的锁定图标)。 单击与页面关联的向右箭头,然后单击“更多信息”。 在结果窗口(图B)中,您应该看到连接使用TLS 1.3加密。
这就是在Nginx网站上启用SSL和TLS的全部内容。 请记住,您应该使用来自信誉良好的证书颁发机构的SSL证书。 但是,将自签名证书用于测试目的始终是个好主意。 一旦您对此过程充满信心,请购买证书并将其部署到您的Nginx站点。