文档章节

申请Let's Encrypt通配符HTTPS证书

飞奔的萝卜
 飞奔的萝卜
发布于 2018/03/14 14:53
字数 1147
阅读 17727
收藏 9

Let's Encrypt 发布的 ACME v2 现已正式支持通配符证书,接下来将为大家介绍怎样申请,Let's go.

注 本教程是在centos 7下操作的,其他Linux系统大同小异。

2018.03.15 20:48 更新了通过acme.sh方式获取证书的方法,墙裂推荐这种方法
2018.08.13 18:30 增加可通过docker镜像获取证书的方法

一、acme.sh的方式

1.获取acme.sh

curl https://get.acme.sh | sh

如下所示安装成功

image

注:我在centos 7上遇到问题,安装完后执行acme.sh,提示命令没找到,如果遇到跟我一样的问题,请关掉终端然后再登陆,或者执行以下指令:

source ~/.bashrc

2.开始获取证书

acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录了,我的域名是在阿里注册的,下面给出阿里云解析的例子,其他地方注册的请参考这里自行修改:传送门

请先前往阿里云后台获取App_KeyApp_Secret 传送门,然后执行以下脚本

# 替换成从阿里云后台获取的密钥
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
# 换成自己的域名
acme.sh --issue --dns dns_ali -d zhuziyu.cn -d *.zhuziyu.cn

这里是通过线程休眠120秒等待DNS生效的方式,所以至少需要等待两分钟

image

到了这一步大功告成,撒花

生成的证书放在该目录下: ~/acme.sh/domain/

下面是一个Nginx应用该证书的例子:

# domain自行替换成自己的域名
server {
    server_name xx.domain.com;
    listen 443 http2 ssl;
    ssl_certificate /path/.acme.sh/domain/fullchain.cer;
    ssl_certificate_key /path/.acme.sh/domain/domain.key;
    ssl_trusted_certificate  /path/.acme.sh/domain/ca.cer;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:10086;
    }
}

acme.shcertbot的方式更加自动化,省去了手动去域名后台改DNS记录的步骤,而且不用依赖Python,墙裂推荐

第一次成功之后,acme.sh会记录下App_Key跟App_Secret,并且生成一个定时任务,每天凌晨0:00自动检测过期域名并且自动续期。对这种方式有顾虑的,请慎重,不过也可以自行删掉用户级的定时任务,并且清理掉~/.acme.sh文件夹就行

二、 docker 镜像获取

如果装有docker环境的话,也可以用docker镜像来获取证书,只需一行命令即可

docker run --rm  -it  \
  -v "$(pwd)/out":/acme.sh  \
  -e Ali_Key="xxxxxx" \
  -e Ali_Secret="xxxx" \
  neilpang/acme.sh  --issue --dns dns_ali -d domain.cn -d *.domain.cn

成功之后,证书会保存在当前目录下的out文件夹,也可以指定路径,修改上面第一行 "$(pwd)/out",改为你想要保存的路径即可。

详细用法,可以参考:传送门

获取下来的证书跟方式一 获取的一模一样,其他信息请参考方式一。

三、 certbot方式获取证书[不推荐]

1.获取certbot-auto

# 下载
wget https://dl.eff.org/certbot-auto

# 设为可执行权限
chmod a+x certbot-auto

2.开始申请证书

# 注xxx.com请根据自己的域名自行更改
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d "*.xxx.com" --manual --preferred-challenges dns-01 certonly

执行完这一步之后,会下载一些需要的依赖,稍等片刻之后,会提示输入邮箱,随便输入都行【该邮箱用于安全提醒以及续期提醒】

image

注意,申请通配符证书是要经过DNS认证的,按照提示,前往域名后台添加对应的DNS TXT记录。添加之后,不要心急着按回车,先执行dig xxxx.xxx.com txt确认解析记录是否生效,生效之后再回去按回车确认

image

到了这一步后,大功告成!!! 证书存放在/etc/letsencrypt/live/xxx.com/里面

要续期的话,执行certbot-auto renew就可以了

image

注:经评论区 ddatsh 的指点,这样的证书无法应用到主域名xxx.com上,如需把主域名也增加到证书的覆盖范围,请在开始申请证书步骤的那个指令把主域名也加上,如下: 需要注意的是,这样的话需要修改两次解析记录

./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d "*.xxx.com" -d "xxx.com" --manual --preferred-challenges dns-01 certonly

image

下面是一个nginx应用该证书的一个例子

server {
    server_name xxx.com;
    listen 443 http2 ssl;
    ssl on;
    ssl_certificate /etc/cert/xxx.cn/fullchain.pem;
    ssl_certificate_key /etc/cert/xxx.cn/privkey.pem;
    ssl_trusted_certificate  /etc/cert/xxx.cn/chain.pem;

    location / {
      proxy_pass http://127.0.0.1:6666;
    }
}

© 著作权归作者所有

共有 人打赏支持
飞奔的萝卜

飞奔的萝卜

粉丝 7
博文 1
码字总数 1147
作品 0
广州
程序员
私信 提问
加载中

评论(81)

烛✟孩
烛✟孩
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

定义的两个环境变量,脚本中是怎么读取到的呢?求指点……
飞奔的萝卜
飞奔的萝卜

引用来自“loubobooo”的评论

大佬,这个证书有效期只有三个月,是怎么解决的?
定时任务自动刷新啊
飞奔的萝卜
飞奔的萝卜

引用来自“blu10ph”的评论

@飞奔的萝卜 github在服务器上老是访问不了,能不能弄个国内的地址来下载~
这个要改原始脚本,改好几处地方,不太方便啊,翻墙就能解决的。
如果你有安装docker环境的话,也可以参考我上面更新的第二种方法,一行命令即可。
飞奔的萝卜
飞奔的萝卜

引用来自“Tinywan”的评论

提示失败:
IMPORTANT NOTES:
- The following errors were reported by the server:

Domain: www.tinywan.top
Type: connection
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.www.tinywan.top

Domain: tinywan.top
Type: connection
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.tinywan.top

To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.

引用来自“哎呀嘿___”的评论

楼主,我用的cerbot,也出现了相同的问题,求解答😬
很大可能是 txt记录没配置正确吧,不建议使用cerbot啊……
飞奔的萝卜
飞奔的萝卜

引用来自“我_承宇”的评论

请问使用 acme.sh 获取到的证书不是 .pem 的,怎么配置到 nginx
已更新……
飞奔的萝卜
飞奔的萝卜

引用来自“KevinBlandy”的评论

成功申请下来了,配置nginx也没问题了。。但springboot感觉配置不对啊?我看网上springboot sll的配置文件信息,跟我生成的文件信息不一样。。。怎么破?楼主求指教。
springboot的不清楚啊,但一般只用到两个文件吧,一个私钥:xxxx.com.key,一个证书文件:fullchain.cer
开源中国首席喵喵喵
开源中国首席喵喵喵
很好,很强大!
loubobooo
loubobooo
大佬,这个证书有效期只有三个月,是怎么解决的?
blu10ph
blu10ph
@飞奔的萝卜 github在服务器上老是访问不了,能不能弄个国内的地址来下载~
哎呀嘿___

引用来自“Tinywan”的评论

提示失败:
IMPORTANT NOTES:
- The following errors were reported by the server:

Domain: www.tinywan.top
Type: connection
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.www.tinywan.top

Domain: tinywan.top
Type: connection
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.tinywan.top

To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.
楼主,我用的cerbot,也出现了相同的问题,求解答😬
Let's Encrypt 发布的 ACME v2 现已正式支持通配符证书

Let's Encrypt 宣布 ACME v2 正式支持通配符证书。Let's Encrypt 宣称将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书。 ACMEv 是 ACME 协议的更新版本,考虑到行业专家和其...

周其
2018/03/14
3.6K
28
生成线上用https证书,支持通配符和多域名,初学Let’s Encrypt用于IIS,纯本地手动

自简书发布的上篇《生成本地测试用https证书,支持通配符和多域名,初学OpenSSL》以来,本地测试用https用的妥妥的。 线上一直用的腾讯云的免费证书(每个域名都要一个证书(滑稽),今天线上...

高坚果兄弟
2018/06/09
0
0
全民 https 时代,为你盘点关于免费 SSL 证书的那些事儿

目前已经存在不少免费好用的 SSL 证书,因此,本文就来盘点一下关于免费 SSL 证书的那些事儿。文章重点介绍了几个可以在线申请的免费 SSL 证书的网址,以及个人点评。 根据 Let's Encrypt CA...

局长
2018/01/07
3.3K
15
Let’s Encrypt 通配符证书如何续期 https脑瓜疼

前言 从去年一直用Let’s Encrypt觉得还挺不错的,毕竟是免费的,用着也挺方便,不过当时不是通配符的,只能申请www开头域名,直到今年3月份后,Let’s Encrypt开放了通配符证书,所以搞事情...

阿郎_
2018/11/22
0
0
Let's Encrypt 发布 ACME v2,开始测试通配符证书

免费数字证书颁发机构 Let's Encrypt 发布了 ACME v2 协议 API 端点,正式宣布开始测试支持签发通配符数字证书的 ACME V2 版 API 接口。 可以使用以下的目录 URL 开始为你的客户端测试对于 ...

局长
2018/01/09
2.7K
21

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
11
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
3
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部