使用acme.sh安装证书
大约 2 分钟...
使用acme.sh安装证书
写在前面
- 能看懂acme.sh官方文档的同学 尽量按照官方的来
- 建议切换到root用户操作,可以避免很多问题
- 不要使用 nginx -s reload,可能导致读取不到最新的证书地址配置(建议使用nginx -s stop && nginx)
- 浏览器存在证书缓存,正确配置后却没有刷新证书,可以尝试重启浏览器
- 安装完成后,acme.sh工具会自动添加crontab任务,定时刷新证书有效期
步骤
# 安装acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
# 生成证书
~/.acme.sh/acme.sh --issue -d domain.com --keylength ec-256 --webroot /your/wwwroot/path
# 安装证书(相当于将证书cp到对应目录下)
~/.acme.sh/acme.sh --install-cert -d domain.com --ecc \
--key-file /your/cert/path/key.pem \
--fullchain-file /your/cert/path/cert.pem \
--reloadcmd "nginx -s stop && nginx"
遇到的问题or注意事项
1、生成证书时 尽量不要使用 --standalone 参数
使用这个参数时,可能导致--webroot参数失效
且需要改动更多的系统配置,不了解这个参数含义的同学不要添加
2、生成证书时的webroot参数
指定webroot参数后,需要注意:
- webroot参数的值为80端口服务的index页面的目录
以nginx的配置为例
server {
listen 80;
server_name domain.com;
root /your/path/nginx/html;
}
生成证书的命令参数为 --webroot /your/path/nginx/html
- 80端口的服务为启动的状态
生成证书的过程中,acme会再webroot目录下生成一个临时文件。然后通过http请求再获取这个文件来验证本人是否拥有该服务器的控制权
3、安装证书时的--reloadcmd参数
该参数指定了服务的重启方式,如果使用Apache,请替换为Apache的服务重启命令
4、生成证书的步骤后 证书已经生成完毕 为什么还要再执行安装证书的命令
生成的证书默认在acme.sh的安装目录(证书一般在~/.acme.sh/domain.com/目录下)
自行copy也可以,仅因为acme.sh的官方文档中不建议使用该目录
5、安装证书后 服务器还是不支持https
安装时指定了copy证书的路径,需要在服务器配置中再次指定证书所在的目录,以nginx为例
server {
listen 443 ssl;
ssl_certificate /your/cert/path/cert.crt; # 这里的文件名与后缀 以安装证书指定的文件为准
ssl_certificate_key /your/cert/path/cert.key; # 同上
server_name domain.com;
# 省略其他配置
# ......
}
6、安装证书时的文件名称
--key-file /your/cert/path/key.pem
--fullchain-file /your/cert/path/cert.pem
这两个参数指定了文件的路径和名称,文件后缀看自身的需求,如下亦可:
--key-file /your/cert/path/appname.key
--fullchain-file /your/cert/path/appname.crt
参考
Powered by Waline v2.15.6