前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Apache 上部署 Let’s Encrypt 证书与自动续期脚本

在 Apache 上部署 Let’s Encrypt 证书与自动续期脚本

作者头像
练小习
发布2017-12-29 13:56:35
1.4K0
发布2017-12-29 13:56:35
举报
文章被收录于专栏:练小习的专栏

https实战,在 Apache 上部署 Let’s Encrypt 证书与自动续期脚本 作为一只菜鸟,对别人都已经掌握而自己却没有实践过的东西总是心痒难耐,这次我决定把个人博客迁到https,没有任何理由,纯是为了练手和学习。 Let’s Encrypt证书是免费的而且90天有效期这些事情就不必多说了。 首先你要有自己的云主机或者服务器,虚拟空间的话就放弃吧。我是购买的腾讯云,毕竟是自己家的产品。然后我的系统是CentOS 6.5 64位,没有安装7,对于7的配置我还需要花点时间去了解。 Let’s Encrypt的客户端源码我是通过git clone到服务器的,如果你还没有安装git……

  1. yum install git-core

建议你装上,会方便很多,部署个代码什么的。 然后就是

  1. git clone https://github.com/letsencrypt/letsencrypt.git

clone完成之后进入到letsencrypt的目录,现在开始生成证书

  1. ./letsencrypt-auto --apache -d 你的域名

这样就签了一个域名,如果你要签多个域名,可以这么写

  1. ./letsencrypt-auto --apache -d 你的域名 -d 你的域名

比如我的

  1. ./letsencrypt-auto --apache -d chengrang.com -d www.chengrang.com

如果要强制把http跳转到https,那么在你的httpd.conf里加上 RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]

ok,现在我们重启apache。

可以看到你的域名是这样的啦

https
https

最后附送一个自动更新证书的脚本

  1. #!/bin/bash
  2. #================================================================
  3. # Let's Encrypt renewal script for Apache on Ubuntu/Debian
  4. # @author Erika Heidi<erika@do.co>
  5. # Usage: ./le-renew.sh [base-domain-name]
  6. #================================================================
  7. domain=$1
  8. le_path='/opt/letsencrypt'
  9. le_conf='/etc/letsencrypt'
  10. exp_limit=30;
  11. get_domain_list(){
  12. certdomain=$1
  13. config_file="$le_conf/renewal/$certdomain.conf"
  14. if [ ! -f $config_file ] ; then
  15. echo "[ERROR] The config file for the certificate $certdomain was not found."
  16. exit 1;
  17. fi
  18. domains=$(grep --only-matching --perl-regex "(?<=domains = ).*" "${config_file}")
  19. last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')
  20. if [ "${last_char}" = "," ]; then
  21. domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')
  22. fi
  23. echo $domains;
  24. }
  25. if [ -z "$domain" ] ; then
  26. echo "[ERROR] you must provide the domain name for the certificate renewal."
  27. exit 1;
  28. fi
  29. cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"
  30. if [ ! -f $cert_file ]; then
  31. echo "[ERROR] certificate file not found for domain $domain."
  32. exit 1;
  33. fi
  34. exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
  35. datenow=$(date -d "now" +%s)
  36. days_exp=$(echo ( $exp - $datenow ) / 86400 |bc)
  37. echo "Checking expiration date for $domain..."
  38. if [ "$days_exp" -gt "$exp_limit" ] ; then
  39. echo "The certificate is up to date, no need for renewal ($days_exp days left)."
  40. exit 0;
  41. else
  42. echo "The certificate for $domain is about to expire soon. Starting renewal request..."
  43. domain_list=$( get_domain_list $domain )
  44. "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}"
  45. echo "Restarting Apache..."
  46. /usr/sbin/service apache2 reload
  47. echo "Renewal process finished for domain $domain"
  48. exit 0;
  49. fi
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档