前言
使用acme可以生成免费的https证书,并且部署简单,让我们一起了解下。
安装
我是nginx服务器,所以我以nginx为代表,来告诉如何安装。
下载acme脚本,并执行脚本
curl https://get.acme.sh | sh
安装过程执行了以下几步:
- 把 acme.sh 安装到你当前登陆账户的home目录下。如果是root账户,安装的位置在
~/.acme.sh/
- 创建了一个acme.sh的快捷方式
alias acme.sh=~/.acme.sh/acme.sh
- 在crontab自动任务里面创建了一个定时任务,每天0:00点自动检测所有的证书,如果快过期了,会自动更新证书.
35 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在.acme.sh
目录中(www.hedaoshe.com)
生成证书
acme.sh --issue -d 域名 --nginx
执行该命令会进行以下步骤:
- 自动找到nginx目录,并生成临时文件
- 通过域名访问该临时文件,访问完成后删除临时文件
- 如果能正常访问,则验证通过,生成证书。否则报错
把证书拷贝到自定义目录
默认证书在安装目录.acme.sh
下生成,但不要直接使用该目录下的证书,而应该拷贝到其他自定义目录下。因为.acme.sh
目录下的文件可能会被更改。
acme.sh --install-cert -d 域名 \
--key-file 自定义目录/key.pem \
--fullchain-file 自定义目录/cert.pem
使用上面命令进行拷贝,acme自动更新证书的任务才能知道要更新的位置。
配置nginx文件
server {
listen 80;
server_name qiud.xyz;
rewrite ^(.*)$ https://qiud.xjj permanent;
}
server {
listen 443 ssl;
ssl on;
ssl_certificate /root/acme/qiud.xjj.cer;
ssl_certificate_key /root/acme/qiud.xjj.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name qiud.xjj;
location /{
proxy_redirect off;
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
}
}
以上配置文件的意思是,当访问80端口就重定向到443端口,并转发给应用程序监听的8080端口。
重启nginx服务器
service nginx restart
结束
自此,我们就完成了acme免费申请https证书,再也不用看那红色的警告了,心情都舒爽了。