certbot配置免费证书

文章详细介绍了如何使用Certbot在CentOS7上为Nginx服务器获取和配置Let’sEncrypt的免费SSL/TLS证书,包括webroot方式的工作原理,Nginx的配置修改,以及证书的更新方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中的配置;


<think>我们正在使用Alpine Linux,并且需要通过Certbot为内网IP地址配置HTTPS证书。注意,Certbot默认要求域名,但我们可以使用IP地址的TLS证书(例如,通过ZeroSSL等支持IP的CA)。以下是步骤: 1. **安装Certbot**: 在Alpine Linux上,使用apk包管理器安装Certbot: ```bash apk add certbot ``` 2. **获取IP证书**: 由于Let's Encrypt不支持IP地址,我们需要使用支持IP的证书颁发机构(如ZeroSSL)。Certbot可以通过插件支持ZeroSSL。首先,安装必要的依赖: ```bash apk add py3-pip pip install certbot certbot-zerossl ``` 然后,使用ZeroSSL获取证书(需要注册ZeroSSL账户并设置API密钥): ```bash certbot certonly --standalone -d your.internal.ip.address --email your@email.com --zerossl --eab-kid YOUR_EAB_KID --eab-hmac-key YOUR_EAB_HMAC_KEY ``` 注意:`your.internal.ip.address`替换为内网IP(如`192.168.1.100`),`YOUR_EAB_KID`和`YOUR_EAB_HMAC_KEY`需要从ZeroSSL账户获取。 3. **配置Web服务器**: 假设使用Nginx配置SSL证书路径(证书通常保存在`/etc/letsencrypt/live/<your-ip>/`目录下): ```nginx server { listen 443 ssl; server_name your.internal.ip.address; ssl_certificate /etc/letsencrypt/live/your.internal.ip.address/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your.internal.ip.address/privkey.pem; ... # 其他配置 } ``` 4. **处理内网访问问题**: Certbot的standalone模式会占用80和443端口,因此需要确保这些端口空闲。如果内网没有DNS解析,直接使用IP访问即可。 5. **自动续期**: 设置cron任务自动续期证书: ```bash echo "0 0 * * * certbot renew --quiet" >> /etc/crontabs/root ``` **注意**:使用IP地址的公开证书较少见,且可能受限于CA的政策。内网环境可考虑自签名证书或搭建私有CA(但需要客户端信任),但这里我们使用ZeroSSL提供公信证书。 §§相关问题§§ 1. 如果内网没有公网DNS解析,如何验证IP地址的所有权以获取证书? 2. 在Alpine Linux中,如何配置Nginx使用已获取的SSL证书? 3. Certbot续期时如何避免standalone模式与Nginx端口冲突? 4. 除了ZeroSSL,还有哪些证书颁发机构支持为IP地址颁发SSL证书? 5. 如何为内网中的多个IP地址配置通配符证书?</think>在Alpine Linux上通过Certbot为内网IP配置HTTPS证书的步骤如下: ### 配置步骤 1. **安装必要组件** 更新仓库并安装Certbot与Web服务器(以Nginx为例): ```bash apk update apk add certbot nginx ``` 2. **生成自签名证书(临时)** 使用OpenSSL创建基础证书(后续会被Certbot替换): ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/nginx-selfsigned.key \ -out /etc/ssl/certs/nginx-selfsigned.crt \ -subj "/CN=Your_Internal_IP" ``` 3. **配置Nginx支持HTTPS** 编辑`/etc/nginx/nginx.conf`,添加SSL监听: ```nginx server { listen 443 ssl; server_name your_internal_ip; # 如 192.168.1.100 ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; location / { root /var/www/html; } } ``` 重启服务:`nginx -s reload` 4. **通过DNS验证获取正式证书** 使用Certbot获取证书(需有公网域名): ```bash certbot certonly --manual --preferred-challenges dns \ -d yourdomain.com \ # 指向内网IP的公网域名 --register-unsafely-without-email ``` 按提示在域名DNS中添加TXT记录验证所有权 5. **配置内网HTTPS** 将生成的证书链接到Nginx: ```bash ln -s /etc/letsencrypt/live/yourdomain.com/fullchain.pem /etc/nginx/ssl/server.crt ln -s /etc/letsencrypt/live/yourdomain.com/privkey.pem /etc/nginx/ssl/server.key ``` 更新Nginx配置指向新证书后重启 ### 关键注意事项 1. **内网IP证书限制** - Let's Encrypt不支持直接为IP地址签发证书 - 必须通过公网域名解析到内网IP实现验证 2. **证书续期方案** 创建续期脚本`/etc/periodic/weekly/cert-renew`: ```bash #!/bin/sh certbot renew --nginx --quiet nginx -s reload ``` 添加执行权限:`chmod +x /etc/periodic/weekly/cert-renew` 3. **客户端信任配置** 在内网设备安装证书: ```bash # Alpine客户端 apk add ca-certificates cp /etc/letsencrypt/live/yourdomain.com/chain.pem /usr/local/share/ca-certificates/ update-ca-certificates ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值