冰天雪地 |
2022-01-06 18:49 |
相对来说,个人网站建立SSL是昂贵的,而且往往过程繁琐。一个标准的2048位证书费用至少150美元/年,网站除了要支付一笔昂贵的费用、重新配置Web服务器,并需要解决大量的配置错误。这让广大中小网站望而生畏。 然而,Let's Encrypt免费证书的开放,极大推进了国内 HTTPS 的进程。Let's Encrypt 真正的意义在于,它推动了 HTTPS 在小型网站和个人网站中的应用,加速全面 HTTPS 时代的到来。Let's Encrypt 的最大贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端。这是为了解决一直以来 HTTPS TLS X.509 PKI 信任模型,即证书权威(Certificate Authority, CA)模型缺陷的一个起步。
非营利组织电子前沿基金会的CertBot是一个很好的工具,我们使用它来安装Let's Encrypt
安装EPEL库,为CertBot提供最新的Python包。
# yum -y install epel-release
下载 CertBot
# yum -y install python-certbot-apache
Apache下配置Let's Encrypt
执行下条命令
# certbot certonly --email 请输入邮箱 --agree-tos --webroot -w 网站根目录 -d 域名 -d 其它域名
生成的证书会存在:/etc/letsencrypt/live/域名/ 目录下
Apache在生成证书后需要修改一下apache的配置文件 /usr/local/apache/conf/httpd.conf ,查找httpd-ssl将前面的#去掉
修改 httpd-ssl.cnf 文件,将文件的<VirtualHost _default_:443></VirtualHost>中下面两行的证书路径改成刚才生成的证书路径。
SSLCertificateFile /etc/letsencrypt/live/域名/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/域名/privkey.pem
如果还要添加另外一个或更多域名,则需要在httpd-ssl.cnf中添加以下两行
NameVirtualHost *:443 SSLStrictSNIVHostCheck off
另外在httpd-ssl.cnf中<VirtualHost _default_:443></VirtualHost>的下面添加以下内容。
<VirtualHost *:443>
DocumentRoot "/usr/local/www/root" # 域名根目录 ServerName image.fouzhuo.com:443 # 域名 ServerAdmin you@example.com # ErrorLog "/usr/local/apache2/logs/error_log" # TransferLog "/usr/local/apache2/logs/access_log" SSLEngine on SSLCertificateFile "/etc/letsencrypt/live/image.fouzhuo.com/fullchain.pem" # 生成的对应域名目录下的证书文件 SSLCertificateKeyFile "/etc/letsencrypt/live/image.fouzhuo.com/privkey.pem" # 生成的对应域名目录下的证书文件
</VirtualHost>
测试自动更新,非真正执行更新
certbot renew --dry-run
证书手动更新
certbot renew -v
查看证书过期时间
certbot certificates
添加定时任务自动更新
echo "0 0 1,8,20 * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
上面的命令是每个月的1,8,20号零点自动检查更新证书,一般在正式过期前30天内可以更新成功。
查看定时任务
cat /etc/crontab
|
|