如何在运行Apache Web Server的CentOS 7上安装Let\'s Encrypt SSL

・4 分钟阅读

介绍

本教程将学习在Apache web服务器上安装tls/ssl证书,完成后,服务器和客户端之间的所有通信会被加密,这是一个保护电子商务网站和其他金融服务的标准实践,Let's Encrypt是实现免费SSL的先驱,在这个例子中会被用作证书提供者。

前提条件

在开始本指南之前,你需要执行以下操作:

  • SSH root访问CentOS 7 VPS
  • 正确配置了域名和vhost的Apache Web服务器
  • 非root sudo用户

安装依赖模块

要安装certbot,你必须安装EPEL存储库,因为默认情况下它不可用,Apache也需要mod_ssl加密:


sudo yum install -y epel-release mod_ssl

下载Let's Encrypt客户端

接下来你会从EPEL存储库安装certbot客户机:


sudo yum install python-certbot-apache

获取和配置SSL证书

Certbot可以很容易地处理SSL证书管理,它为提供的域生成一个新的证书作为参数。

在本例中,example.com将被用作将会发出证书的域:


sudo certbot --apache -d example.com

如果要为多个域或子域生成SSL,请使用以下命令:


sudo certbot --apache -d example.com -d www.example.com

注意:第一个域应该是你的基本域,在本例子中: example.com

安装证书时,你将收到一个分步指南,将允许你自定义证书详细信息,你将能够在强制HTTPS或将HTTP作为默认协议进行选择,出于安全原因,还需要提供电子邮件地址。

安装完成后,你将收到类似的消息:


IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
emails sent to user@example.com.
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert
will expire on 2019-04-21. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
configuration directory at / etc / letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also have certificates and private keys obtained by Let's
Encrypt so regular backups of this folder is ideal.
- If you like Let's Encrypt, please consider supporting our work by:

配置自动证书续订

Let's Encrypt证书有效期为90天 建议在60天内更新以避免出现任何问题,为了实现这一点certbot会协助我们执行你的更新命令。 它将验证证书是否在到期后不到30天:

 
sudo certbot renew

 

如果安装的证书是最近的,certbot将只验证它到期日期:


Processing /etc/letsencrypt/renewal/example.com.conf
The following certs are not due for renewal yet:
 /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

要自动执行此续订进程,你可以设置一个cronjob。首先,打开crontab :

 
sudo crontab -e

 

可以安排在每个星期一午夜运行:


0 0 * * 1 / usr / bin / certbot renew >> /var/log/sslrenew.log

脚本的输出会以管道形式输出到/var/log/sslrenew.log文件。

结束语

从现在开始,服务器和客户端之间的所有通信都是加密的。

Hrh profile image