阅读官网文档
Let's Encrypt入门指南提供两种方式获取https证书,两种方式根据我们对服务器的访问权限来区分,一种是具有命令行访问权限,另一种是没有命令行访问权限的方式,大多数情况下我们都具有命令行访问权限,因此本文章主要详细讲解命令行访问权限的方式;如下图:
安装Certbot
Certbot官网就直接是使用教程,只是没有中文版本,进入之后展示的内容如下:
让我们选择我们我们web应用运行的环境,我是在CentOS系统上,使用Nginx管理我的站点,下面详细说明使用Nginx管理的站点如何上https,Centos Nginx环境官方使用教程
- ssh登录你的服务器,同时你需要有该服务器的超管权限
- 安装snapd
- 阅读snap官方安装教程,官方教程只有英文版,没有中文版本;进入之后需要让你选择你的系统来确定具体的安装教程(我的系统是CentOS,因此选择CentOS),详情如下:
- 阅读CentOS上安装sanp官方文档,官方文档简单介绍了snap可以运行的系统,同时说明了snap在EPEL(简单认为是官方软件库的扩展就行,官方维护的软件有限,因此要安装非官方的软件需要额外添加源),如果不了解EPEL,感兴趣的可以自行科普一下。这里不需要了解EPEL,如果你没有安装过EPEL那一定需要安装EPEL才行,官方文档也给出了各系统版本(查看系统版本,可以使用
hostnamectl命令)EPEL的安装方式,如下图:- 假设你已经添加了EPEL,接下来安装snapd,使用命令
sudo yum install snapd安装snapd- 将主snapd通信套接字设置为开机启动:
sudo systemctl enable --now snapd.socket- 开启classic snap支持:
sudo ln -s /var/lib/snapd/snap /snap
- 安装snap core:
sudo snap install core; sudo snap refresh core,后面那一条命令是更新core,通常安装完core之后core已经是最新的,后面这条命令可能不会按照预期工作,如提示「snap "core" has no updates available」 - 再继续接下来的操作之前,请确认Certbot没有使用系统的包管理工具安装过,如果有安装过轻先移除它;这里是不同包管理工具移除Certbot的方式,
sudo apt-get remove certbot、sudo dnf remove certbot、sudo yum remove certbot;请确保certbot命令是通过snap安装的 - 安装Certbot:
sudo snap install --classic certbot - 使certbot命令生效:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
选择安装证书的方式
- 申请证书的同时自动修改nginx配置文件,使其工作:
sudo certbot --nginx - 仅申请证书,需要自己手动修改配置文件:
sudo certbot certonly --nginx,在对应的nginx配置文件位置添加以下配置:
server {
# 你站点的配置
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/isqqy.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/isqqy.cn/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = site_domain_name) {
return 301 https://$host$request_uri;
} # 如果有多个域名,添加多个if就行,同时site_domain_name也要对应改为列表
listen 80;
listen [::]:80;
server_name site_domain_name; # 这里site_domain_name改为需要上https的域名
return 404;
}
其实第一种方式就是自动将这些配置添加到nginx配置文件,想偷懒的话推荐使用第一种方式,最终效果如下:
添加好配置之后,访问一下你配置的域名,是否强制走https了,如果强制走https了,那么恭喜你你已经成功了。
默认情况下,Let's Encrypt申请的证书只有三个月有效期,但是幸运的是,使用Certbot申请的证书会自动进行续订。