安装acme.sh
curl https://get.acme.sh | sh
把 acme.sh 安装到你的 home 目录下:~/.acme.sh/并创建 一个 bash 的 alias, 方便你的使用:
alias acme.sh=~/.acme.sh/acme.sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile
安装过程中会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。
00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
===============================================================
申请证书
acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证。
http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.
acme.sh --issue -d gatj.com -d *.gatj.com --webroot /www/wwwroot/gatj.com/
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.
如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:
acme.sh --issue -d gatj.com --gatj.com
如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:
acme.sh --issue -d gatj.com --nginx
注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏。
该类型的配置有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.
如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:
acme.sh --issue -d gatj.com --standalone
================================================================
DNS方式
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证。
这种方式的缺点是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
创建文件
cd /root/.acme.sh/
为DNS提供信息,提交给域名解析
acme.sh --issue -d 9.gatj.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
获取TXT解析
_acme-challenge.9.gatj.com
HV_JR9dTtXuQArjTsm9q-pOU5gPmmNGMu8t63H3ZTG0
再次执行,获取证书
acme.sh --renew -d 9.gatj.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
证书的使用
acme.sh --installcert -d 9.gatj.com \
--key-file /etc/nginx/ssl/9.gatj.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
Nginx/Tengine服务器安装SSL证书
vim /usr/local/nginx/conf/nginx.conf
vim /etc/nginx/nginx.conf
================
server {
listen 443;
server_name 9.gatj.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /www/server/panel/vhost/cert/clsn.io/9.gatj.com.cer;
ssl_certificate_key /www/server/panel/vhost/cert/clsn.io/clsn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}