Ubuntu 16.04上启用加密安全的Nginx Web服务器
Let’s Encrypt 是什么?
Let’s Encrypt是由Internet Security Research Group (ISRG)提供的一个免费的认证机构。 它提供了一种轻松自动的方式来获取免费的SSL/TLS证书 - 这是在Web服务器上启用加密和HTTPS流量的必需步骤。 获取和安装证书的大多数步骤可以通过使用名为Certbot的工具进行自动化。
该软件可以在存在对服务器的shell访问的情况下使用:换句话说,当可以通过SSH连接到服务器时。在本教程中,我们将看到如何使用certbot获取免费的SSL证书,并在Ubuntu 16.04服务器上使用Nginx。
安装Certbot
第一步是安装certbot,这个软件客户端将在几乎所有的过程中自动化。 Certbot开发人员维护自己的Ubuntu软件存储库,其中包含比Ubuntu存储库中存在的软件更新的软件。
添加Certbot库:
#add-apt-repository ppa:certbot / certbot
接下来,更新APT源列表:
# apt-get update
此时,可以使用以下apt命令安装certbot:
# apt-get install certbot
Certbot现已安装并可以使用。
获得证书
有各种Certbot插件用于获取SSL证书。 这些插件有助于获取证书,而其安装和Web服务器配置都留给管理员。
我们将使用一个名为Webroot的插件获取SSL证书。
在有能力修改正在投放的内容的情况下,建议使用此插件。 在证书颁发过程中不需要停止Web服务器。
配置NGINX
Webroot通过为名为.well-known的目录中的每个域创建一个临时文件,放置在Web根目录下。 在我们的例子中,web根目录是/var/www/html。 确保让我们加密验证目录。 为此,请编辑NGINX配置。 使用文本编辑器打开/etc/nginx/sites-available/default文件:
#$ EDITOR/etc/nginx/sites-available/default
在该文件中,在服务器块中,放置以下内容:
location ~/.well-known {
allow all;
}
保存,退出并检查NGINX配置:
# nginx -t
如果没有错误,应该显示:
nginx: the configuration file/etc/nginx/nginx.conf syntax is ok
nginx: configuration file/etc/nginx/nginx.conf test is successful
重新启动NGINX:
# systemctl restart nginx
获得Certbot证书
下一步是使用Certbot使用Webroot插件获取新的证书。 在本教程中,我们将安全(例如)域www.example.com。 需要指定应由证书保护的每个域。 执行以下命令:
# certbot certonly --webroot --webroot-path=/var/www/html -d www.example.com
在此过程中,Cerbot将要求有效的电子邮件地址进行通知。它也会要求与EFF分享,但这不是必需的。在同意服务条款之后,它将获得一个新的证书。
最后,目录/etc/letsencrypt/archive将包含以下文件:
chain.pem:加密连锁证书。
cert.pem:域名证书。
fullchain.pem:cert.pem和chain.pem的组合。
privkey.pem:证书的私钥。
Certbot还将创建符号链接到/etc/letsencrypt/live/domain_name/中的最新证书文件。这是我们将在服务器配置中使用的路径。
在NGINX上配置SSL/TLS
下一步是服务器配置。在/etc/nginx/snippets/中创建一个新的片段。代码段是可以包含在虚拟主机配置文件中的配置文件的一部分。所以,创建一个新的文件:
#$ EDITOR/etc/nginx/snippets/secure-example.conf
该文件的内容将是指定证书和密钥位置的指令。粘贴以下内容:
ssl_certificate/etc/letsencrypt/live/domain_name/fullchain.pem;
ssl_certificate_key/etc/letsencrypt/live/domain_name/privkey.pem;
在我们的例子中,domain_name将是example.com。
编辑NGINX配置
编辑默认虚拟主机文件:
#$ EDITOR/etc/nginx/sites-available/default
如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.example.com
return 301 https://$server_name$request_uri;
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/secure-example.conf
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
...
这将启用NGINX上的加密。
保存,退出并检查NGINX配置文件:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新启动NGINX:
# systemctl restart nginx
小结:
按照上述步骤安装配置,我们就有一个安全的基于NGINX的Web服务器,由Certbot授权加密,并加密。 这只是一个基本配置,当然可以使用许多NGINX配置参数来个性化一切,但这取决于特定的Web服务器要求。
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里