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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cmd里进入某个目录_cmd进入文件目录

    cmd里进入某个目录_cmd进入文件目录1.开始->运行->CMD2.进入某个磁盘,直接盘符代号:如D:,不用CD命令切换3.进入除根录以下的文件夹cd文件夹路径例如我要进入E:/ProgramFiles/PHP就输入E:回车 注:不能在一打开CMD的时候运行CDE:/ProgramFiles/PHP,需要先进入磁盘(若一打开CMD的时候运行CDE:/ProgramFiles/PHP,目

    2022年10月10日
    2
  • collection集合结构图,map是否可以为null以及线程是否安全图

    collection集合结构图,map是否可以为null以及线程是否安全图collection集合结构图,map是否可以为null以及线程是否安全图

    2022年4月23日
    63
  • pycharm单行和多行注释快捷键_c语言基本函数及解释

    pycharm单行和多行注释快捷键_c语言基本函数及解释对所编写的函数****快速进行多行注释**:**重点——小灯泡定义一个函数如下,款素插入多行注释,效果如下:deffunc1(char,time):”””打印多行分割线:paramchar:分割线使用的分割字符:paramtime:分割线重复次数”””print(char*time)func1(“o”,)其中注释段插入步骤:在定义函数头后deffunc1(char,time):光标放到函数名上,等小灯泡出现,点

    2022年8月27日
    7
  • 树莓派命令连接wifi_树莓派连接无线网wifi配置方法

    树莓派命令连接wifi_树莓派连接无线网wifi配置方法Wifi配置我的Wifi配置基本上是跟着这个教程来的,下面将过程简述,并解释每个命令/语句的作用。1、检查USB无线网卡是否已经正确识别将无线USB网卡插入树莓派后启动树莓派,比较不建议热插拔,因为插入的一瞬间会有比较高的电流,如果电源输出不够可能导致树莓派重启。用自己的方法进入shell界面后输入命令:lsusb如果树莓派已经正常识别,在显示类似于如下的信息中可以看到你的USB无线网卡设备ID和…

    2022年6月6日
    160
  • asp数组随机排序

    asp数组随机排序功能 将一个数组打乱它的顺序 显示出来 让每一次显示出来的顺序都不一样 Dimtttt Split 1 2 3 4 5 6 随机排序 nbsp nbsp leng UBound tt randomize nbsp nbsp forii 0toleng 1 nbsp nbsp nbsp b int rnd leng nbsp nbsp nbsp temp tt b nbsp nbsp nbsp tt b tt ii nbsp nbsp nbsp tt ii tempNext nbsp For

    2025年8月20日
    3
  • 771服务器cpu性能排行,CPU114查询网

    771服务器cpu性能排行,CPU114查询网4485083264155WQ4201954736564128225WQ2201964606764128200WQ220197392991632155WQ420198392701632105WQ4201910358722448180WQ420191333158122465WQ2201914318681224105WQ22019183067912246…

    2022年9月20日
    5

发表回复

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

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