前面总结的获取证书方式里,使用的是先手动生成CSR文件和密钥对,然后再根据CSR文件生成自签名证书,最后进行CRL和OCSP校验。接下来就把自己在Ubuntu下用certbot申请和部署Let’s Encrypt证书的过程和步骤也总结一下。Let’s Encrypt只能申请DV证书(Domain Validated),也就是最常见的一种证书,还记得之前说到证书分类,DV,OV和EV证书的分类方式是根据验证证书的模式不同,从证书审核的严格程度来排的,审核严谨度DV证书<OV证书<EV证书。Let’s Encrypt CA只提供DV证书申请的原因,在于它自己创建的ACME协议,用来自动化管理证书的申请,更新和销毁,这和一些普通的传统的CA机构不同,一般的CA机构以上操作多多少少都要人工操作,尤其是撤销证书需要人工提交申请,人工审核,撤销过程很长。

ACME协议域名校验

ACME协议是Let’s Encrypt CA机构设计的用来自动化管理证书申请,更新和签发。在证书申请阶段,有的CA机构为了更快速,会在收到CSR文件后,生成服务器实体密钥对,但是,一般来说,服务器公钥由服务器提供就好,如果CA机构来生成服务器密钥对,那么CA机构也拥有了服务器私钥。ACME协议则不同,密钥对的生成在客户端代理上,来看看该协议下的申请和域名校验过程:

  1. 客户端代理首先创建一个代理账户,并生成一对密钥对,作为通信密钥对,这个通信密钥对作用是在与ACME之间通信的校验,客户端代理会把通信密钥对中的公钥发送给Let’s Encrypt CA机构。
  2. 接着客户端代理可与开始证书申请,首先要对域名进行校验,前面说到,Let’s Encrypt CA只签发DV证书,DV证书的域名校验方式有两种:一,DNS方式,配置域名的DNS TXT记录。二,HTTP  well-known URL资源方式,在域名服务器的80端口上配置一个URL,该资源文件用来审核身份。
  3. 客户端代理对接下来与Let’s Encrypt CA通信的消息使用通信密钥对的私钥签名,发送给Let’s Encrypt CA。
  4. 最后,Let’s Encrypt CA收到客户端代理的请求,使用通信密钥对的公钥进行验证,完成域名校验,此时,客户端代理就可以进行证书的申请、更新,续期和销毁操作了。

要特别注意的是,上面的通信密钥对并不是服务器密钥对,通信密钥对用来保证ACME协议通信过程的安全,接下来客户端代理在进行证书申请过程中,才会生成服务器密钥对。客户端代理生成服务器密钥对和CSR文件,CSR文件使用服务器公钥进行签名,最后整个消息使用通信密钥对的私钥进行签名。

Nginx插件

Certbot客户端使用Nginx插件获取证书,也可以使用其他例如apache插件等,前提准备好一个自己的一个域名,以Nginx插件为例,在Ubuntu下用apt-get命令来安装:

sudo apt-get install nginx

然后添加包package repository:

sudo add-apt-repository ppa:certbot/certbot

安装nginx添加完包后,更新下apt源数据:

sudo apt-get update

最后一步,安装Certbot的nginx package:

sudo apt-get install python-certbot-nginx

到这一步,完成了Certbot客户端的安装,接下来要先配置nginx。

配置

在Ubuntu下用vi编辑器打开路径etc/nginx/sites-available/default文件,找到server{ …… }位置,然后添加自己的域名server_name:

sudo vi /etc/nginx/sites-available/default

:wq保存退出,然后用sudo nginx –t命令查看配置文件有没有错:

Certbot客户端

Certbor客户端安装完成,nginx插件配置好后,就可以用它来申请Let’s Encrypt证书,用certbot有两种方式申请证书,第一种用certonly子命令,该命令生成的证书文件保存在/etc/letsencrypt路径下,虽然certonly模式会让certbot启动nginx,但不会配置相应的HTTPS命令,也就是上面的nginx配置,需要我们收到去配置nginx插件的server_name。certonly仅仅是获取证书,不会去安装证书。

第二种模式是用certbot run子命令,该命令在获取证书后,会自动修改nginx插件(或是其他web服务器插件)的配置文件,然后重启web服务器。

签发SSL证书

Certbot客户端签发ssl证书的命令:

sudo certbot –nginx –d zzzjustin.com –d www.zzzjustin.com

把两个-d参数后面换成自己的服务器域名。

等待证书生成完毕后,你就可以从输出种看到,生成的证书在路径/etc/letsencrypt/live/zzzjustin.com(你自己的服务器域名)/fullchain.pem下,还有证书的失效日期expire on 2020-04-22。

对于Let’s Encrypt CA签发的证书来说,其证书链中的中间证书可能不止一个,两个中间证书都可以校验证书服务器的身份,前面在证书链部分也说过有交叉验证这一回事,即一个CA机构给另一个CA机构签发二级证书,由于很多操作系统没有将Let’s Encrypt的根证书纳入到自己的可信任列表中,所以会让其他CA机构如DST Root CA X3或者ECDSA机构签名的中间证书来签发服务器实体证书。Let’s Encrypt CA签发的证书支持CT机制,也就是证书透明度,SCT签名证书时间戳信息可以从证书的OCSP服务中得到,证书一旦签发,会自动发送签发日志给各个证书日志logs,开始审计Auditors和监视Monitors也会相应开始运作。

Ubuntu下certbot申请和部署证书相关推荐

  1. ubuntu下nginx+php5的部署

    ubuntu下nginx+php5环境的部署和centos系统下的部署稍有不同,废话不多说,以下为操作记录: 1)nginx安装 root@ubuntutest01-KVM:~# sudo apt-g ...

  2. Ubuntu下的Nginx-Uwsgi-Django项目部署详细流程

    Ubuntu下的Nginx+Uwsgi+Django项目部署详细流程 版本 Ubuntu 18.04 Python 3.6 Django 3.2 Nginx 1.14.0 Python 虚拟环境 vi ...

  3. 使用 certbot 申请泛域名证书和自动续签

    下载certbot certbot官网 sudo apt-get update sudo apt-get install software-properties-common sudo add-apt ...

  4. certbot申请通配符域名证书

    certbot官网 下载certbot # 下载certbot-auto wget -c https://dl.eff.org/certbot-auto -P /usr/local/bin # 设置可 ...

  5. Ubuntu下Django+uWSGI+nginx部署

    本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...

  6. 博客主机_自动申请续期免费证书

    原创:博客主机_自动申请续期免费证书 一不留神,之前的域名证书过期了.由于是Let's Encrypt免费证书,需要3个月手工续期一次,一年就得4次,还是有点麻烦,搞成自动化多好. 以下操作均在服务器 ...

  7. Realtek ALC268集成声卡驱动成绩在ubuntu下的处置责罚方案

    作者: Lynghu     出自: http://www.linuxdiyf.com 置信许多国际的朋友也会需求处置责罚这个成绩,所以我在用中文庞大年夜写一下.我的电脑是Acer Aspire 53 ...

  8. 使用certbot自动申请续期SSL证书(Ubuntu)

    ##介绍 我们通过Certbot自动化完成SSL证书注册和配置文件修改步骤,从而在Web服务器上启用加密的HTTPS.目前,获取和安装证书的整个过程在Apache和Nginx上都是完全自动化的. 在本 ...

  9. 无80和443端口下申请域名SSL证书(适用于 acme.sh 和 certbot)

    无80和443端口下申请域名SSL证书 文章目录 无80和443端口下申请域名SSL证书 SSL 证书申请的方式 通过 DNS 申请 SSL 证书 获取个人域名 acme.sh 方式 certbot ...

最新文章

  1. python时间序列函数_python时间日期函数与利用pandas进行时间序列处理详解
  2. Openshift API部分源码学习笔记(一)
  3. 哪吒之魔童降世 - 逆天改命,若命运不公,就和它斗到底!
  4. 如何在Angular项目里创建新的Service
  5. TCP接入层的负载均衡、高可用、扩展性架构
  6. 关于es查询dsl的filter与must,term与match的区别
  7. 自己动手架设linux下Web服务器(图)1
  8. 10个经典Python爬虫入门实例!你还不知道吗
  9. 如何选出好用的仓库库存管理系统软件?看文章就知道了
  10. CAN总线波特率计算方法
  11. 单片机学习日记- Day12
  12. 一键轻松去除抖音火山等短视频水印~
  13. Android Camera高级特性——手动对焦
  14. 基于神经网络的指纹识别,指纹比对技术何时出现
  15. ioi2020集训队作业_IOI2020集训队作业
  16. 低版本360浏览器下,PDF.js部分文字显示不全的问题
  17. 国产android智能手表,国产安卓手机越来越骚了 这回连手表都用上了
  18. 同态加法_我对同态的想法
  19. 【斐波那契数列】10题-斐波那契数列
  20. Linux经典练习题

热门文章

  1. 人工智能也暖心:它的使命,是做懂你的机器人
  2. 浮动布局解决文字环绕图片问题
  3. word闪退 用endnote_Endnote X8 word无法加载问题 或 加载崩溃
  4. Android studio 系统存储数据SharedPreferences
  5. 准备笔试-埃森哲在线笔试
  6. C++使用Crow框架自定义的资源路径
  7. 石墨烯技术到底是什么?
  8. 【云原生】设备云之Fcloud云组态第三方服务
  9. flask markdown 报错解决
  10. UE5第一人称射击游戏蓝图教程