acme-tiny申请证书:
前几个网站采用acme-tiny方案安装证书,非常便捷。但是由于git.yoqi.me这个网站架构有点不同,项目采用go语言后端,同时qicdn.yoqi.me提供https方式的cdn服务。那么两个域名都需要申请ssl,直观方向就需要修改acme-tiny项目了。。回顾一下 Let’ s Encrypt证书申请步骤:
(1)创建一个account.key
# openssl genrsa 4096 > account.key
(2)创建一个domain.key这个作为域名私钥
# openssl genrsa 4096 > domain.key
(3)创建domain.csr作为域名公钥申请的证书请求文件,这个文件配置了一些域名/联系人相关信息(比如用到domain.key)。
# openssl req -new -sha256 -key domain.key -subj "/CN=qcdn.git.yoqi.me" > domain.csr
(4)申请证书
python acme_tiny.py --account-key ./git.yoqi.me/account.key --csr ./git.yoqi.me/domain.csr --acme-dir /acme-tiny/challenges/ --contact lyq@yoqi.me > ./git.yoqi.me/signed.crt
这一步是重点,domain.csr发送证书请求,得到一个token,把这个token放到指定web目录,如果验证通过了,则下发公钥证书。
那么qicdn.yoqi.me使用cdn服务器,所以无法自动放置token到指定web目录。至少需要开发工具。
(5)生成证书链
#wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
#wget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem#cat intermediate.pem root.pem > full_chained.pem
cat ./git.yoqi.me/signed.crt intermediate.pem > ./git.yoqi.me/chained.pem
(6)配置证书,重启web容器
这部分不说了。
acme.sh申请证书:
上面acme-tiny方式由于,cdn域名无法自动放置token,为此找到acme.sh这个项目,同样非常简洁的证书申请工具。把整个流程再走一遍发现非常简单:
(1)安装acme.sh
curl https://get.acme.sh | sh
source ~/.bashrccertbot
这个安装不像certbot这个项目那样需要很多依赖。
(2)申请证书
acme.sh --issue -d git.yoqi.me --webroot /opt/gogs/public/
(3)安装证书
acme.sh --installcert -d git.yoqi.me --keypath /home/ubuntu/www/ssl/www.your-app.com.key --fullchainpath /home/ubuntu/www/ssl/www.your-app.com.key.pem --reloadcmd "sudo service nginx force-reload"
(4)sudo免密码
这里就要提一嘴,普通用户权限无法执行重启nginx,所以需要配置免密码sudo命令。
sudo visudo ubuntu ALL=(ALL) NOPASSWD: /usr/sbin/service nginx force-reload
(5)dhparam 文件
openssl dhparam -out /home/ubuntu/www/ssl/dhparam.pem 2048
nginx添加配置:
server {
listen 80 default_server;
# 新增
listen 443 ssl;
ssl_certificate /home/ubuntu/www/ssl/www.your-app.com.key.pem;
ssl_certificate_key /home/ubuntu/www/ssl/www.your-app.com.key;
# ssl_dhparam
ssl_dhparam /home/ubuntu/www/ssl/dhparam.pem;
}
dhparam这个变量文件还不知道干嘛用的,生成非常慢。
重点都提出来了,其他文档可以查看官方介绍:
https://github.com/Neilpang/acme.sh/wiki/Blogs-and-tutorials