1. Let’sEncrypt说明:
Let's Encrypt 是免费、开放和自动化的证书颁发机构由Linux基金会(Linux Foundation)进行日常管理维护,它为36.3亿个网站提供TLS证书的非盈利性证书颁发机构, 通过它我们可以免费申请网站证书,并您的网站上启用 HTTPS (SSL/TLS) 提供支持。
Let’s Encrypt 不控制或审查第三方客户端,也不能保证其安全性或可靠性。官方推荐使用 Certbot 客户端来签发证书,
官网:https://certbot.eff.org/
2. 获取和申请证书的流程:
2.1、Certbot工具:通常,通过Certbot工具可以快速、简单地申请Let's Encrypt证书。Certbot支持多种服务器类型和操作系统,并提供了简化的命令行工具。2.2、证书申请:使用Certbot等工具,您可以申请证书并通过DNS或HTTP等方式完成域名所有权的验证。2.3、证书安装:申请成功后,证书将被下载并存储在服务器上,通常存储在/etc/letsencrypt目录中,并由Certbot或其他工具自动配置服务器以使用新的证书。
3.安装命令
使用snap进行安装,什么是snap,snap安装包是Canonical公司发布的全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间。
[root@iZuf69tzbfkht29jeb58kiZ ~]# yum install epel-release # 安装epel
[root@iZuf69tzbfkht29jeb58kiZ ~]# yum install snapd # 安装snapd
[root@iZuf69tzbfkht29jeb58kiZ ~]# systemctl enable --now snapd.socket # 启用snapd.socket
[root@iZuf69tzbfkht29jeb58kiZ ~]# ln -s /var/lib/snapd/snap /snap # 创建软链接
[root@iZuf69tzbfkht29jeb58kiZ ~]# snap install --classic certbot # 安装certbot
[root@iZuf69tzbfkht29jeb58kiZ ~]# ln -s /snap/bin/certbot /usr/bin/certbot # 创建certbot软链接
4.证书生成
certbot certonly --nginx --email xx@qq.com -d xxx.域名.com
xx@qq.com 替换自己的邮箱,xxx.域名.com 替换自己的域名生成的证书放在/etc/letsencrypt/live/[网站域名]下
此证书位置:/etc/letsencrypt/live/minio.medic-tutor.com/
生成证书
cert.pem chain.pem fullchain.pem privkey.pem
5. Nginx配置证书
server {listen 443 ssl;server_name xxx.域名.com; ssl_certificate "/etc/letsencrypt/live/xxx.域名.com/fullchain.pem";ssl_certificate_key "/etc/letsencrypt/live/xxx.域名.com/privkey.pem";ssl_session_cache shared:SSL:1m;ssl_session_timeout 10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;client_max_body_size 10m;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_next_upstream http_502 http_504 error timeout invalid_header;}
}
6.证书的有效时间是90天,certbot自动定时续期证书
certbot renew #手动测试,查看证书过期时间
certbot renew --force-renewal #忽略证书过期时间,直接重置证书时间
vim /etc/crontab
0 0 * * 1 certbot renew --renew-hook "service nginx reload"
#这个 cronjob 将在每周一自动执行证书续期,并在续期完成后重新加载Nginxcrontab /etc/crontab # 加载任务,生效