Let’s Encrypt 申请HTTPS证书流程「建议收藏」

Let’s Encrypt 申请HTTPS证书流程「建议收藏」准备工作:域名可供解析的服务器(或使用ngrok将需要生成证书的域名映射到具体的http服务器地址)申请官网地址:Let’sEncrypt、Certbot流程打开Certbot网址,选择使用服务器与操作系统,如下:使用如上命令在对应服务器安装好certbot后,使用:sudocertbotcertonly命令安装,certbot(实际上是certbot-au…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

准备工作:

  1. 域名
  2. 可供解析的服务器(或使用ngrok将需要生成证书的域名映射到具体的http服务器地址)

申请官网地址:Let’s EncryptCertbot

流程

  1. 打开Certbot网址,选择使用服务器与操作系统,如下:
    选择服务器与操作系统

  2. 使用如上命令在对应服务器安装好certbot后,使用:sudo certbot certonly命令安装,certbot (实际上是 certbot-auto ) 有两种方式生成证书:

    • standalone 方式: certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
    • webroot 方式: certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件, Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。

按如下步骤进行:

$ sudo certbot certonly

Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Plugins selected: Authenticator webroot, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): api.techeffic.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for api.techeffic.com
Select the webroot for api.techeffic.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
-------------------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1
Input the webroot for api.techeffic.com: (Enter 'c' to cancel): /usr/local/yihui/
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/api.techeffic.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/api.techeffic.com/privkey.pem
   Your cert will expire on 2018-03-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot 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

需要注意的是,生成证书过程中,certbot会验证http://域名/.well-known/acme-challenge/28uFZcNfrnCeQObOvdZwKn_7dASGQckboRLns285zig,需要搭配服务器来完成认证,认证通过后,会生成对应的证书/私钥到指定目录,如上面所示:Congratulations字样。

试图进入这个目录查看时,会有权限限制,重新授权后查看发现证书已经被软连接到:

/etc/letsencrypt/archive/api.techeffic.com/

完整映射如下:
证书软连接

注意事项

  • 加载证书与private key时确保当前用户是有权限的
  • 证书只有90天权限,到期需要使用如下命令手动刷新证书
sudo certbot renew //这个必须到期后才会刷新成功
#certbot renew --force-renew //强制刷新,就算没到期也刷新
  • 使用下面命令测试是否可以正常更新
sudo certbot renew --dry-run

如果出现:
自动刷新证书
则表示可以正常更新,如果要自动更新,将更新命令加入系统任务,或使用如下命令:

sudo certbot renew --quiet --no-self-upgrade

增加通配符认证

Let’s Encrypt于20180314开始支持通配符CA认证,即可以一次性给一个根域名下的所有子域名颁发受信的CA证书(如:给*.exmple.com颁发证书后,test.exmple.com和demo.exmple.com都被信任)

有了这个特性,对用户来说方便多了。Let’s Encrypt的通配符认证是通过ACME v2实现的。以下是为域名申请证书的过程(参考:https://my.oschina.net/kimver/blog/1634575):

Certboot方式(不推荐)

使用与上面列出来的有点不同,我尝试用这种方法在申请过程出现下载jdk失败404错误,莫名其妙,所以不推荐用这种方法是正确的

  • 获取certbot-auto
# 下载wget https://dl.eff.org/certbot-auto
# 设为可执行权限
chmod a+x certbot-auto
  • 开始申请证书
# 注xxx.com请根据自己的域名自行更改
./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory-d "*.xxx.com" -d "xxx.com" --manual --preferred-challenges dns-01 certonly

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

执行到上图最后一步时,先暂时不要回车。申请通配符证书是要经过 DNS 认证的,接下来需要按照提示在域名后台添加对应的 DNS TXT 记录。添加完成后,先输入以下命令确认 TXT 记录是否生效:

$ dig -t txt _acme-challenge.xxx.com @8.8.8.8

确认生效后,回车继续执行,最后会输出Congratulations! 证书保存在/etc/letsencrypt/live/xxx.com/,校验证书信息,输入如下命令:

$ openssl x509 -in /etc/letsencrypt/live/xxx.com/cert.pem -noout -text

# 可以看到证书包含了 SAN 扩展,该扩展的值就是 *.xxx.com
...
Authority Information Access:
OCSP - URI:http://ocsp.int-x3.letsencrypt.org
CA Issuers - URI:http://cert.int-x3.letsencrypt.org/

X509v3 Subject Alternative Name:
DNS:*.xxx.com
...

到此

ACME.sh方式(我用这种方式成功了)

  • 获取acme.sh
    因为是安装在当前用户下,安装成功后,需要source ~/.bashrc
curl https://get.acme.sh | sh
  • 开始获取证书
    acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录了,我的域名是在阿里注册的,下面给出阿里云解析的例子,其他地方注册的请参考这里自行修改:传送门,请先前往阿里云后台获取App_Key跟App_Secret:传送门,然后执行以下脚本
# 替换成从阿里云后台获取的密钥
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
# 换成自己的域名
acme.sh --issue --dns dns_ali -d zhuziyu.cn -d *.zhuziyu.cn

这里是通过线程休眠120秒等待DNS生效的方式,所以至少需要等待两分钟,正常情况下等待完成后,出现下面的内容
更新过程
到了这一步大功告成,撒花。

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

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

参考资料

关于将证书复制到某个目录或更新问题,参考:使用 acme.sh 制作 HTTPS 证书

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188550.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面向Windows的Pytorch完整安装教程

    面向Windows的Pytorch完整安装教程目录1.概述2.安装2.1安装cuda2.2安装cudnn2.3安装Pytoch2.4验证1.概述PyTorch是一个开源的Python机器学习库,其前身是著名的机器学习库Torch。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,它是一个面向Python语言的深度学习框架,不仅能够实现强大的GPU…

    2022年6月24日
    20
  • snmptrap配置_snmp服务端ip和端口

    snmptrap配置_snmp服务端ip和端口一、trap的用途TRAP是提供从代理进程到管理站的异步报告机制。为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析二、trap的工作流程1、agent端: A

    2022年8月20日
    25
  • Ubuntu18.04下安装Pytorch-GPU(超详细自己安装全过程)「建议收藏」

    Ubuntu18.04下安装Pytorch-GPU(超详细自己安装全过程)「建议收藏」硬件环境:自己的笔记本电脑CPU:i5-4210MGPU:NVIDIAgeforce920M1Anaconda3的安装与配置1.1下载可以到Anaconda官网下载历史版本:https://repo.anaconda.com/archive/国内的下载速度可能比较慢,选择到清华大学开源软件镜像站下载。我使用的python3.6.9,下载对于的Anaconda版本是5.1…

    2022年9月26日
    4
  • Spring过滤器和拦截器的区别[通俗易懂]

    Spring过滤器和拦截器的区别[通俗易懂]Spring过滤器和拦截器的区别 两者的作用 过滤器:是在javaweb中,你传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符…

    2022年8月23日
    6
  • Linux LAMP架构介绍及配置「建议收藏」

    Linux LAMP架构介绍及配置「建议收藏」LinuxLAMP架构介绍及配置一、LAMPLAMP平台概述LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言LAMP各组件主要作用(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也

    2022年10月16日
    5
  • linux的权限命令_linux命令总结

    linux的权限命令_linux命令总结查看文件或目录的权限:ll更改权限操作:chmod①.u表示:属主。②.g表示:所属组用户。③.o表示:其他用户。④.a表示:所有用户。⑤.+表示:增加权限。⑥.-表示:删除权限。⑦.=表示:分配权限。1.每一行显示一个文件或目录的信息,这些信息包括文件的类型、文件的权限、文件的属主、文件的所属组、文件大小、创建时间和文件名。2.读取权限:r,写入权限:w,执行权限:x。①—:没有权限,对应二进制为000,八进制为0.②–x:允许执行,对应二进制001,八进制为1.③-.

    2022年9月11日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号