📣今日作品:使用acme.sh在Ubuntu配置Let’s Encrypt免费通配符SSL证书
👦 创作者:Jum朱
⏰预计花费:10分钟
📖个人主页: Jum朱博客的个人主页
acme.sh 是一款方便,强大的 Let's Encrypt 域名证书申请续签程序.支持一键脚本和 docker 部署.支持 http 和 DNS 两种域名验证方式,其中包括手动,自动 DNS 及 DNS alias 模式方便各种环境和需求.可同时申请合并多张单域名,泛域名证书,并自动续签证书和部署到项目。
Let's Encrypt作为一个公共且免费SSL的项目广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
GitHub: https://github.com/Neilpang/acme.sh
打开终端安装支持包
sudo apt-get install socat
安装acme.sh,支持root和普通账户,安装完成后必须关闭当前终端,重新开启一个以使acme.sh命令生效。
curl https://get.acme.sh | sh
首先需要到DNSPOD后台去生成API Token(如果腾讯云注册的域名,直接用腾讯云账号登录DNSPOD即可)
在腾讯云域名服务 https://www.dnspod.cn 上申请DNS API Token,安全设置-创建API Token
获取 Aliyun 域名 API 的密钥,在阿里云官网登录的情况下点击https://ak-console.aliyun.com/#/accesskey即可看到自己的密钥,没有就直接创建一个即可。
依次执行如下三条命令,替换成你自己的Id和Key
export DP_Id="1234"
export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_dp -d mydomian.com -d *.mydomian.com
一小阵等待之后,你的通配符证书就安静地躺在了~/.acme.sh/mydomian.com/下了
接着配置证书,以Ubuntu下为例,参考这篇文章
Ubuntu下Apache2配置https且强制http转为https
新建一个文件夹用于保存证书,注意不能直接复制生成的证书到目录,需要使用安装命令
mkdir /etc/apache2/certs
安装生成的证书到这个目录保存,用于在Apache2中引用,在终端输入以下命令(注意这是单条命令,只不过转行了)将证书保存到/etc/apache2/certs
acme.sh --install-cert -d luochenzhimu.com \
--cert-file /etc/apache2/certs/luochenzhimu.com.crt \
--key-file /etc/apache2/certs/luochenzhimu.com.key \
--ca-file /etc/apache2/certs/ca.crt \
--reloadcmd "service apache2 force-reload"
复制/etc/apache2/sites-available目录下的000-default.conf和default-ssl.conf到/etc/apache2/sites-enabled
配置default-ssl.conf为
SSLCertificateFile /etc/apache2/certs/luochenzhimu.com.crt
SSLCertificateKeyFile /etc/apache2/certs/luochenzhimu.com.key
SSLCertificateChainFile /etc/apache2/certs/ca.crt
重启apache,应该已经可以访问https了
sudo service apache2 restart
后续更新acme.sh方法
acme.sh --upgrade