本文介绍,使用acmesh自动获取https证书的方法
背景
很多网站都需要https证书,但是很多网站的证书都是收费的,同时也有一些是短期免费的,acme.sh 就提供了一些方法来获取免费的证书 ,并通过设置系统定时任务来获取长期免费。
环境说明
linux Ubuntu 20.04 系统测试 , 且系统已经安装 nginx , nginx version: nginx/1.18.0 (Ubuntu)
查看nginx版本命令 nginx -v
参考官网地址
特别说明
exaple@mail.com 请替换为自己实际可用的邮箱
example.com 请替换成自己的域名
您已经设置好域名和服务器之间的正确解析关系 并 配置好的您的nginx配置文件安装
sudo curl https://get.acme.sh | sh -s email=exaple@mail.com
验证安装情况
```shell
acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
>## 设置默认参数
```shell
acme.sh --set-default-ca --server zerossl
或
acme.sh --set-default-ca --server letsencrypt
查看默认参数
acme.sh --info
生成https证书步骤
```shell
此命令可以和自己账户关联起来 , 这里不需要执行
acme.sh --register-account --eab-kid GthwFbAaca9kpSEfg6l2KA \
--eab-hmac-key LLEE43fpeFO4Hp3HryoOfAo0ZC73Z0-_rqWEPK25dLZCaSzCrQ7Gr_609SotUxEk_Phx7C2bZSQCAVcUrC50uw
生成证书
/home/onestudy 目录必须存在 , 目录下面 放了一个index.html 文件 , 用于验证域名是否可以访问. index.html 文件内容见下面单独说明
acme.sh --issue -d example.com -w /home/onestudy
或
acme.sh --issue -d example.com -w /home/onestudy --force
安装证书
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/cert/example.com.key \
--fullchain-file /etc/nginx/cert/example.com.pem \
--reloadcmd "sudo systemctl force-reload nginx.service"
## index.html 文件内容
>cat /home/onestudy/index.html
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>One Study</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header {
background-color: #333;
color: #fff;
padding: 20px;
text-align: center;
}
nav {
background-color: #666;
padding: 10px;
text-align: center;
}
nav a {
color: #fff;
text-decoration: none;
padding: 10px;
}
nav a:hover {
background-color: #999;
}
section {
padding: 20px;
}
footer {
background-color: #333;
color: #fff;
text-align: center;
padding: 10px;
position: fixed;
bottom: 0;
width: 100%;
}
</style>
</head>
<body>
<header>
<h1>Welcome to My Website</h1>
</header>
<nav>
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Contact</a>
</nav>
<section>
<h2>About Us</h2>
<p>This is a simple website created for demo purposes.</p>
</section>
<footer>
© 2024 My Website. All rights reserved.
</footer>
</body>
</html>
其他可以生成证书的命令 , 但在本次是验证不是那么的顺利
acme.sh --issue -d example.com --nginx
acme.sh --issue -d example.com --dns dns_cf
acme.sh --issue --standalone -d example.com
acme.sh --issue --alpn -d example.com
查看定时任务是否存在, 不存在的自行创建
crontab -l
31 11 * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
删除证书
acme.sh remove example.com
强制提前刷新证书有效期
"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" --force