通过Nginx和Apache使用Let’s Encrypt通配符SSL证书

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

什么是SSL证书? SSL代表安全套接字层。这是一项标准的全球技术,可确保Web服务器和Web客户端之间的数据加密,从而最大程度地减少了被入侵的网站和Web应用程序的风险。 Web服务器上安装的SSL证书可确保此安全连接。 SSL证书包含网站的公共密钥,网站的身份和其他相关信息,并托管在网站的原始服务器上。想要与原始服务器通信的客户端必须浏览该文件以获取网站的公共密钥和ID。

让我们加密是一个证书颁发机构,可以轻松获取和安装免费的SSL / TLS证书,从而在Web服务器上启用加密的HTTP流量。它提供了一个称为certbot的软件客户端,可自动执行大多数安装过程以简化SSL安装。对于Apache和Nginx Web服务器,SSL安装是完全自动化的。本指南描述了如何在Ubuntu / CentOS上将Netx和Apache与Let’s Encrypt通配符SSL证书一起使用。

在Ubuntu上安装Certbot | CentOS

要在Ubuntu和CentOS上安装certbot,请根据您的Web服务器运行以下命令:

对于Nginx Web服务器

要为Nginx安装Cerbot,请使用以下命令。

--- Ubuntu  ---
sudo apt install certbot python3-certbot-nginx

--- CentOS 8 ---
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf config-manager --set-enabled PowerTools
sudo yum -y install certbot python3-certbot-nginx nginx

--- CentOS 7 ---
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install certbot python2-certbot-nginx nginx

对于Apache Web服务器

对于Apache Web服务器,运行以下命令以安装certbot。

--- Ubuntu  ---
sudo apt install certbot python3-certbot-apache2

--- CentOS 8 ---
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf config-manager --set-enabled PowerTools
sudo yum -y install certbot python3-certbot-apache httpd

--- CentOS 7 ---
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install certbot python2-certbot-apache httpd

验证Nginx和Apache Web服务器配置

您需要确保首选Web服务器之后有一个Web服务器虚拟主机。该文件应包含Web服务器名称和别名,如下所示:

对于Apache,请检查文件,如下所示:

--- Ubuntu ---
sudo vim /etc/apache2/sites-available/example.com.conf

--- CentOS ---
sudo vim /etc/httpd/conf.d/example.com.conf

您需要服务器名称和别名,如下所示:

ServerName example.com
ServerAlias www.example.com

与Nginx一样,检查配置如下:

sudo vim /etc/nginx/conf.d/example.com.conf

您还需要在此处输入服务器名称和别名。

server_name  example.com  www.example.com;

使用Certbot加密通配符SSL

验证了Web服务器的虚拟主机后,就可以请求“让我们加密”通配符SSL了。通配符SSL是一种SSL,涵盖主域及其所有子域。例如, *。例如,example.com的通配符SSL也应保护something.example.com,one.example.com等。

让我们加密通配符SSL保护Nginx / Apache

运行如下所示的命令*。需要example.com需要SSL。

sudo certbot certonly 
  --agree-tos 
  --email s[email protected] 
  --manual 
  --preferred-challenges=dns 
  -d *.example.com 
  --server https://acme-v02.api.letsencrypt.org/directory

以下是上述命令中使用的各种参数的说明。

  • –Certonly:使用此命令的certonly选项,您只需要颁发SSL证书。如果从命令中删除certonly选项,则Certbot将颁发SSL证书并更新虚拟主机文件以应用SSL证书。
  • –Agree-tos:用于同意“让我们加密服务条款”
  • –电子邮件:已发送以将SSL存储在您的“加密”帐户中。 SSL即将到期时用于通知。
  • –手册:这提供了一种交互式的方式来发布SSL,并提示您更多信息。
  • –Preferred-challenges:指定SSL验证方法。在发布SSL之前,您需要验证域名。在这种情况下,请选择DNS
  • -d:用于指定颁发SSL证书的域
  • –服务器:用于指定颁发SSL证书的API端点。

运行命令时,我收到需要添加到DNS服务器的TXT记录。记录如下所示:

Please deploy a DNS TXT record under the name 
_acme-challenge.example.com with the following value: 

HejzlvXokaKoAq_xnr5LTplWbKYNScVH-ASy1vMYMGE
Before continuing, verify the record is deployed. 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Press Enter to Continue

将记录添加到您的Web服务器域的DNS服务器。

确保该记录在您的DNS服务器上可用。

通过Nginx和Apache使用Let's Encrypt通配符SSL证书

确认记录已扩展后,按 输入 获取SSL。您将获得以下反馈:

IMPORTANT NOTES: 
- Congratulations! Your certificate and chain have been saved at: 
  /etc/letsencrypt/live/example.com/fullchain.pem 
  Your key file has been saved at: 
  /etc/letsencrypt/live/example.com/privkey.pem 
  Your cert will expire on 2020-10-28. To obtain a new or tweaked 
  version of this certificate in the future, simply run certbot 
  again. To non-interactively renew *all* of your certificates, run 
  "certbot renew" 
- If you like Certbot, please consider supporting our work by: 

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate 
  Donating to EFF:                    https://eff.org/donate-le

配置Nginx Web服务器以使用允许加密通配符SSL

配置Nginx Web服务器以使用Lets Encrypt通配符SSL

您需要编辑nginx虚拟主机配置文件以启用https,如下所示:

sudo vim /etc/nginx/conf.d/example.com.conf

内容如下所示:

server { 
 listen 80; 
 listen [::]:80; 
 server_name *.example.com; 
 return 301 https://$host$request_uri; 
} 

server { 
 listen 443 ssl; 
 server_name *.example.com; 
 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 
 include /etc/letsencrypt/options-ssl-nginx.conf; 
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
 root /var/www/example.com; 
 index index.html; 
 location / { 
   try_files $uri $uri/ =404; 
 } 
}

通过创建指向站点的链接来使文件有效,该链接在启动时被Nginx Reads Site Enabled启用。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

测试您的Nginx配置,以确保所有设置均正确。

sudo nginx -t

如果您对nginx设置感到满意,则应该获得如下输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: configuration file /etc/nginx/nginx.conf test is successful

然后重新加载Nginx。

sudo systemctl restart nginx

配置Apache Web服务器以使用Lets Encrypt通配符SSL

对于Apache Web服务器,重复与Nginx相同的步骤。以下是编辑Apache配置文件的方法:

sudo vim /etc/apache2/sites-available/api.example.com.conf

有这样一条SSL线:

SSLCertificateFile      /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem

完成后重新加载Apache

sudo systemctl restart apache2

而已。 Web服务器已配置为提供通配符子域。如果您从浏览器测试SSL,则应该能够通过Lets Encrypt获取SSL信息,如下所示:

通过Nginx和Apache使用Let's Encrypt通配符SSL证书

乐于开发和查看以下有趣的Linux指南。

  • 如何在Ubuntu上使用PHP-FPM安装Nginx
  • 如何使用Nginx使用同一域(FQDN)托管多个站点
  • 如何在Ubuntu / Debian上使用Nginx安装WordPress
  • 如何使用LDAP身份验证保护Apache网页
  • 如何使用Ansible在Ubuntu / CentOS 7上安装Apache Tomcat

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

Sidebar