使用Certbot 生成 https 证书

1.下载certbot项目

# git clone https://github.com/certbot/certbot.git

# cd certbot/

# chmod a+x ./certbot-auto

 

2.生成一个或多个单域名证书,事先要确保80、443端口可以通,并且没有被占用,最后域名有解析并且解析到当前服务器

# ./certbot-auto certonly --standalone -m 393008735@qq.com -d yzq.ngrok.yuzq.org -d que.ngrok.org

certonly    表示仅生成证书, 不自动安装

-d  参数为域名, 可以存在多个参数, 表示多个域名

-m  参数为管理者邮箱

 

【1】如果报错"...We were not be able to guess the right solution from your pip

output",这可能是因为系统镜像没同步完整pypi仓库(比如阿里云),切换成清华大学站或者使用官网仓库(将 /root/.pip/pip.conf改个名字),重新执行上面的命令

 

【2】如果报错"OSError: Command /opt/eff.org/certbot/venv/bin/python2.7 - setuptools pip wheel failed with error code 1",执行pip install --upgrade virtualenv ,再执行上面命令

 

证书生成成功,会将证书地址显示出来(如 /etc/letsencrypt/live/yzq.ngrok.yuzq.org/fullchain.pem)

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/yzq.ngrok.yuzq.org/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/yzq.ngrok.yuzq.org/privkey.pem

Your cert will expire on 2019-01-23. To obtain a new or tweaked

version of this certificate in the future, simply run certbot-auto

again. To non-interactively renew *all* of your certificates, run

"certbot-auto renew"

- If you like Certbot, please consider supporting our work by:

 

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate

Donating to EFF: https://eff.org/donate-le

 

 

3.生成泛域名证书

(1)交互式方式创建泛域名证书

# ./certbot-auto certonly --manual --server https://acme-v02.api.letsencrypt.org/directory -m 393008735@qq.com -d *.ngrok.yuzq.org

certonly 表示仅生成证书, 不自动安装

--manual 表示以交互式方式创建证书, 或使用 --standalone 模式, certbot 会自动创建一个WebServer进行校验

--server  参数为当前使用的ACME协议版本, 这里需要特别注意的是, 只有V2版本才支持泛域名, certbot 工具默认的协议是V1. 因此如需创建泛域名证书, 则必须制定此参数, 且该参数值固定

-d  参数为域名, 可以存在多个参数, 表示多个域名

-m  参数为管理者邮箱

 

接下来有几步要确认

1.Are you OK with your IP being logged (Y)es/(N)o: Y

2.DNS验证

Please deploy a DNS TXT record under the name

_acme-challenge.ngrok.yuzq.org with the following value:

2qFoaQCrnvyuvUNQGVR0TqnalVjrFmNAJMhlxDMnmCU

Before continuing, verify the record is deployed.

 

到域名管理后台,添加一条txt解析记录,主机记录和记录值再提示信息中,如下

 

 

解析记录添加好了之后,再在控制台中敲击任意键进行验证,最终得到证书

 

(2)自动验证方式创建泛域名证书

注:不是所有的域名都能用自动验证方式创建证书,仅支持以下域名供应商,如阿里云是没有提供API来自动验证

 

# ./certbot-auto certonly --standalone -n --agree-tos -m 393008735@qq.com --preferred-challenges http -d *.ngrok.yuzq.org

-n  非交互式

--email  指定账户

--agree-tos  同意服务协议

-d  参数为域名, 可以存在多个参数, 表示多个域名

-m  参数为管理者邮箱

 

4.证书的有效期是90天,如果证书到期,可以重新更新

# ./certbot-auto renew

# /usr/local/webserver/cerbot/certbot-0.27.1/certbot-auto certonly --webroot -w /data/www/erp_doraemon_test/webapp -d erp.e10.cncn.net -d www.e10.cncn.net -d m.e10.cncn.net

 

也可以添加定时任务

# crontab -e

30 1 * * 1 ./www/server/certbot/certbot-auto renew >> /var/log/le-renew.log

每周一半夜1点30分执行renew任务

 

 

5.ngnix配置例子

server {

listen 80;

server_name yzq.ngrok.yuzq.org;

return 301 https://$server_name$request_uri;

}

 

server

{

listen 443 ssl;

server_name yzq.ngrok.yuzq.org;

index index.html index.php;

root /data/www/test;

 

include php56_ci.conf;

include extra.conf;

 

ssl on;

ssl_certificate /etc/letsencrypt/live/ngrok.yuzq.org/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/ngrok.yuzq.org/privkey.pem;

 

ssl_session_cache shared:SSL:50m;

    ssl_session_timeout  30m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;

    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;

    ssl_prefer_server_ciphers on;

 

location /static/ {

location ~ .*\.(php)?$

{

deny all;

}

}

location /static_m/ {

location ~ .*\.(php)?$

{

deny all;

}

}

 

location / {

if (!-e $request_filename) {

rewrite ^/(.*)$ /index.php/$1 last;

}

}

access_log /www/logs/web/test.log;

}

 

 

 

 

 

 

<think>好的,用户想使用Certbot为域名生成SSL/TLS证书,我需要详细解释步骤。首先,要确保用户已经安装了Certbot和Nginx插件,因为不同的系统安装方式不同。比如Ubuntu和CentOS的命令不一样,得分开说明。然后,生成证书的具体命令是sudo certbot --nginx,这个步骤会自动配置证书,但用户可能需要确认域名和同意条款。还要提到测试自动续期,用certbot renew --dry-run,这样用户知道证书会自动更新,不用手动操作。另外,用户可能需要手动配置的情况,比如防火墙需要开放80和443端口,或者域名解析是否正确。还要提醒用户备份配置,避免出错。引用里的资料提到自动续期的重要性,可以引用一下。最后,生成相关问题的时候,要涵盖安装问题、证书位置、手动配置、测试自动续期以及多域名处理。整个过程要清晰,步骤明确,避免用户遗漏关键点。</think>### 分步指南:使用Certbot为域名生成SSL/TLS证书 以下是具体操作步骤: 1. **安装Certbot及Nginx插件** - Ubuntu/Debian系统: ```bash sudo apt update sudo apt install certbot python3-certbot-nginx ``` - CentOS/RHEL系统: ```bash sudo yum install epel-release sudo yum install certbot python3-certbot-nginx ``` 2. **生成证书并自动配置Nginx** 运行命令并按照交互提示操作: ```bash sudo certbot --nginx ``` - 输入需要申请证书的域名(例如:`example.com www.example.com`) - 阅读并同意服务条款 - 选择是否订阅电子报(可选) 3. **验证证书自动续期** ```bash sudo certbot renew --dry-run ``` 成功提示表示自动续期配置正常,证书到期前会自动更新[^3]。 4. **防火墙配置(如有需要)** - 确保开放HTTP(80)和HTTPS(443)端口: ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp ``` ### 关键配置说明 - **证书存储路径**:生成证书默认保存在`/etc/letsencrypt/live/域名/`目录下,包含: - `fullchain.pem`(证书链) - `privkey.pem`(私钥) - **Nginx配置修改**:Certbot会自动修改Nginx配置文件,添加SSL相关配置项[^1] ### 补充说明 如果遇到无法自动配置的情况,可手动指定证书路径: ```nginx ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem; ``` 并重启Nginx生效[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值