certbot的官网地址:
https://certbot.eff.org/
1、制作证书前的准备:
你需要有一个公网地址,并绑定合法域名
2、开始制作:
(1)、下载Certbot客户端:
wget https://dl.eff.org/certbot-auto
1.
(2)、下载后,进入下载的目录,添加执行权限
chmod a+x ./certbot
3、介绍一下certbot的两种工作方式:
(1)、 standalone 方式: certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
(2)、webroot 方式: certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件, Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。
4、我使用的是webroot方式,自己搭建一个nginx服务器,配置location字段,如下:
(1)、使用rpm安装nginx
sudo yum -y install nginx
1.
(2)、编辑nginx的配置文件,修改以下参数:
在http 段范围
certbot在Centos7上配置合法签名证书,实现nginx的https访问_签名证书
有这么一段得,不然啊,生成不了证书,我也无语啊
server {
listen 80;
server_name 合法域名;
location ^~/.well-known/acme-challenge/ {
default_type "text/plain";
root /etc/nginx/html/;
}
}
(3)、修改完nginx配置文件后,使用nginx -t命令,测试配置文件语法:
sudo nginx -t
#返回OK 表示配置文件修改成功
(4)、启动nginx服务
sudo nginx
netstat -anplut | grep 80 #检测80端口,是否在监听
(5)、使用certbot-auto命令,生成证书
./certbot certonly --webroot -w /usr/share/nginx/html/ -d [填写合法域名的地址]
#-w 表示 nginx中指定的root 网站根目录的路径
#-w 后面的路径可能是 /etc/nginx/html.如果没有就创建这个路径
(6)、上述命令执行成功后,返回以下界面:
certbot在Centos7上配置合法签名证书,实现nginx的https访问_合法_02
从上图中可以看到,会在/etc/letsencrypt/live下 生成你的域名的文件夹,并且目录下会有此文件:
[centos@shuzhiyuan1 ~]$ tree /etc/letsencrypt/
/etc/letsencrypt/
├── accounts
│?? └── acme-v01.api.letsencrypt.org [error opening dir]
├── archive [error opening dir]
├── csr
│?? └── 0000_csr-certbot.pem
├── keys [error opening dir]
├── live
│?? └── kafeimao.com (别名,最终,看自己域名)
│?? ├── cert.pem -> ../../archive/kafeimao.com/cert1.pem
│?? ├── chain.pem -> ../../archive/kafeimao.com/chain1.pem
│?? ├── fullchain.pem -> ../../archive/kafeimao.com/fullchain1.pem
│?? ├── privkey.pem -> ../../archive/kafeimao.com/privkey1.pem
│?? └── README
├── options-ssl-apache.conf
├── options-ssl-nginx.conf
├── renewal
│?? └── kafeimao.com.conf
├── renewal-hooks
│?? ├── deploy
│?? ├── post
│?? └── pre
└── ssl-dhparams.pem
12 directories, 10 files
nginx的https 访问,需要用到 上述两个 pem的证书文件:
5、测试配置nginx支持https访问,测试 https的证书是否可用:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name kafeimao.com;
ssl on;
ssl_certificate "/etc/letsencrypt/live/kafeimao.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/kafeimao.com/privkey.pem";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html/kafeimao.com;
index index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
6、重载nginx服务;
sudo nginx -s reload
1.
7、访问域名,测试https连接:
certbot在Centos7上配置合法签名证书,实现nginx的https访问_certbot_03
8、发现证书是可用的,值得祝贺,你已经成功了! 非常简单
总结:
certbot默认注册的证书 ,有效期是90天, 需要更新证书
使用命令进行更新:
(1)、手动更新
./certbot renew -v
(2)、自动更新
./certbot renew --quiet --no-self-upgrade
在注册证书时,如果遇到此错误:
certbot在Centos7上配置合法签名证书,实现nginx的https访问_certbot_04
这个错误,跟命令中使用了webroot方式,(官网也推荐这种方式)所以,nginx里要配置正确的location字段,就是server中的配置;
certbot配置免费证书
于 2023-05-18 22:47:06 首次发布