文章目录

  • 名词说明
  • 前言
  • HTTPS的加密传输过程
    • HTTP、HTTPS
    • 对称加密、非对称加密
    • 私钥文件、SSL证书(包含公钥)
    • HTTPS网址访问流程
  • 传统人工的SSL证书管理方式
  • ACME协议是如何工作的
  • 使用acme.sh从letsencrypt生成免费证书
  • x.509证书结构
  • SSL和TLS

名词说明

  • CA(Certificate Authority)

数字证书认证机构,也称为电子商务认证中心、电子商务认证授权机构;是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

  • .key 文件

私钥

  • .csr 文件(certificate signing request)

证书签名请求文件;含有公钥信息及相关资讯的档案。

  • .crt 文件(certificate)

用.csr 生成的证书文件(包含了由私钥文件生成的公钥)。

  • x.509

是密码学里公钥证书的格式标准。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)

  • RA(Registration Authority)

数字证书注册审批机构,给申请数字证书者发放证书,发放前对申请者进行审合登记,它是CA的延伸机构。

  • PKI(Public Key Infrastructure)

公钥基础设施,由密钥管理(发放,吊销),密钥合法性验证,认证机构,密钥发放等组成。为数据完整性,隐私性,数据身份认证等提供基础服务。

前言

​ 不知道小伙伴们注意到没有,现在我们访问大多数网站的时候,他们的网站前面都会显示一个HTTPS的字样,这就代表该网站是使用的SSL证书加密的。

​ 而SSL证书是需要权威的专门机构颁发的,那么这个颁发过程又是怎样的呢?怎样颁发才能更加高效便捷、省心省力呢?

​ 今天,我们就来详细聊聊ACME协议。正是它,大大简化了我们的SSL证书管理。

​ 在本篇文章中,首先我们会介绍一下HTTPS的加密传输过程,以便于为理解后面的知识扫清障碍;其次会通过了解传统人工的SSL证书管理方式来理解为什么我们需要使用ACME协议;最后详细解读一下ACME协议是如何工作的。

HTTPS的加密传输过程

HTTP、HTTPS

当我们通过浏览器访问某一网站时,通常分为两种形式:

  • 一种是HTTP明文传输
  • 一种是HTTPS加密传输。HTTPS是通过HTTP + SSL组成。HTTPS使用对称加密和非对称加密结合的方式,传输数据阶段依然使用对称加密,但是对称加密的秘钥我们采用非对称加密传输。

也就是说,用HTTP的时候我们与网站之间发送和接收的数据都是原模原样地在互联网上流通的;

而用HTTPS的时候无论是我们向网站发送的数据还是网站向我们发送的数据,都是经过特殊的手段加密的,其中涉及非对称加密和对称加密。

对称加密、非对称加密

​ 通俗地讲,在对称加密中,加密和解密都是用同一把钥匙;

​ 而在非对称加密中有公钥和私钥两把钥匙,并且用公钥加密的数据是不能用公钥自身解密的,只能用私钥进行解密,理解这两点很重要。即:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。

​ 当然,我们这里所说的钥匙都是以数据或文件的形式存在的。

私钥文件、SSL证书(包含公钥)

​ 在一台已经配好HTTPS访问的网站服务器上会有两个至关重要的文件,一个是.key的私钥文件,一个是.crt的SSL证书

​ 而在这个SSL证书中就包含了由私钥文件生成的公钥。

HTTPS网址访问流程

接下来,我们就来看一下这个整体过程。

  • 当用户通过HTTPS访问网站时,网站会向用户的浏览器发送一个SSL证书。在用户浏览器收到SSL证书后,会通过系统内置的权威颁发机构名单来核实证书的可靠、可信度。这份名单是操作系统内置的,真实性、可靠性毋庸置疑。安全!
  • 一旦确认可信,用户浏览器就会生成一串只有自己知道的明文A,并用SSL证书中包含的公钥通过非对称加密将其加密成密文B,并将密文B发送给网站服务器。注意,由于这里采取的是非对称加密,所以密文B在传输中即使被截获也无法解密,只能用网站服务器手里的私钥解密。安全!
  • 在网站服务器收到密文B后,就会用自己手上私钥文件将其解密还原成明文A。至此,用户浏览器和网站服务器手上都拿到了明文A,而且只有他们两者知道。安全!
  • 接下来,网站服务器和用户浏览器就会用这个统一的明文A作为密钥,对所有传输数据做对称加密和解密。安全!

以上只是HTTPS加密传输的整体过程,其中还有很多细节,不是我们今天讨论的重点,有兴趣的小伙伴可以做进一步了解。

传统人工的SSL证书管理方式

​ 在了解了HTTPS加密传输以后,我们发现:这个过程的关键环节就是第一步,也就是证书的可靠性。因为如果证书都不可靠的话,以后还有什么安全可言呢。所以,网站管理者的首要工作就是向权威颁发机构申请一个SSL证书,并且在网站服务器上做好相应配置。我们来看看网站管理者需要做的工作。

  • 发起一个SSL证书颁发申请。在这一步,我们需要向证书颁发机构提交我们的域名,以表明我们想为哪个域名申请SSL证书。
  • 证明自己是这个域名的拥有者。在这一步,一旦我们向权威颁发机构证明了自己确实是这个域名的拥有者,他们就会为我们颁发一个SSL证书。
  • 获取证书并在网站服务器做好相应配置。首先,我们需要权威机构颁发SSL证书获取下来,然后在网站服务器上做好相应配置。其次,由于我们的SSL证书通常只在某一个时间段内有效,所以网站管理员要时刻记住在证书到期之前从新重复之前的整个证书获取过程,这是很耗时也很容易忘记的。

ACME协议是如何工作的

​ 正是由于以上人工管理SSL证书的的诸多不变,催生了ACME协议的诞生,它使我们能够在没有任何人为干预的情况下,从证书颁发机构即时获取证书。

​ ACME协议是由著名的Let's Encrypt开发的,它是一个免费的证书颁发机构。

​ ACME协议有两个关键部分,一个是ACME客户端,一个是ACME服务端。ACME服务端是一个证书颁发机构,能够自动颁发签名证书。比如,Let’s Encrypt就是一个ACME服务端。ACME客户端通常在web服务器上运行,它向ACME服务端证明web服务器确实控制了它想要获取证书的域名。一旦证明了这一点,ACME客户端就可以请求、续签和吊销证书。

  • 创建一个账户。ACME客户端使用ACME协议创建一个账户。首先,ACME客户端要生成一个密钥对,然后向ACME服务端发送一个帐户创建请求。这个帐户创建请求将包含生成的公钥,并将使用生成的私钥对其进行签名。因此,这个私钥实际上将用于对所有ACME客户端请求进行签名。也就是说,这是ACME服务端识别ACME客户端的方式。当然,这个帐户创建请求也可以包含联系人信息。例如,如果此帐户存在任何问题,可以使用电子邮件地址通知管理员。请注意,帐户的创建步骤只需执行一次。因此,一旦ACME客户端在ACME服务端创建了一个帐户,就可以开始执行证书管理操作了。
  • 验证所有权。首先,ACME客户端向服务端发送一个请求,该请求表明ACME客户端希望为其获取证书的域名。接下来,ACME服务端将向客户端提供一些验证来响应此请求,以证明web服务器确实控制着某个域名。ACME服务端可能会要求ACME客户端在特定位置提供具有特定内容的HTTP资源,或者要求它提供具有特定内容的DNS记录。ACME客户端只需要响应其中一个验证,就可以证明域名的所有权。如果确实如此,那么ACME服务端就知道web服务器确实是该域名的拥有者。
  • 颁发证书。一旦ACME客户端成功地证明了域名的所有权,它就会生成一个密钥对,也就是私钥和公钥,而公钥则会用于生成一个证书签名请求,并将证书签名请求发送到ACME服务端。同样,整个请求都是使用ACME客户端的帐户私钥签名的。因此,ACME服务端随后将验证签名。而且,如果一切正常,它将继续发出签名证书,然后ACME客户端可以下载该证书。

​ 最后,请记住签名证书仅在一定时间段内有效。当然,当需要续订证书时,我们刚才看到的请求证书的过程也可以用于续订证书。而且,整个证书管理过程实际上可以完全自动化!因此,ACME客户端可用于请求和续订证书,而整个过程都是自动的,不需要任何人为干预,这显然比传统的证书管理简单得多!

使用acme.sh从letsencrypt生成免费证书

实现了acme协议, 可以从 letsencrypt 生成免费的证书的sh脚本

# 需要先把域名指定到vm的ip才行
# centos安装依赖
yum install socat nc -y# 下载acme.sh
curl https://get.acme.sh | sh
cd /root/.acme.sh/# 由于acme协议和letsencryptCA都在频繁的更新,开启acme.sh自动升级
acme.sh  --upgrade  --auto-upgrade# 设置ca机构为letsencrypt(免费的证书颁发机构)
acme.sh --set-default-ca --server letsencrypt# SSL 证书测试签发,会在该目录下生成相关文件$HOME/.acme.sh/${domain}_ecc
# 注意替换jenrey.com域名为你自己的域名,下述不再提醒
acme.sh --issue --insecure -d jenrey.com --standalone -k ec-256 --force --test# SSL 证书正式签发
acme.sh --issue --insecure -d jenrey.com --standalone -k ec-256 --force# SSL 证书配置生成.crt和.key文件
# 注意name.crt和name.key为自定义的名字,自行修改
acme.sh --installcert -d jenrey.com --fullchainpath /data/name.crt --keypath /data/name.key --ecc --force# 关闭自动更新
# acme.sh --upgrade  --auto-upgrade  0

打开浏览器点击url前面的锁

深入浅出解读http和https及ACME协议工作原理(另附域名证书申请教程)相关推荐

  1. HTTP协议工作原理(与HTTPS的区别)

    HTTP是超文本传输协议,由请求和响应构成,HTTP协议永远都是客户端发起请求,服务端回送响应 HTTP协议工作原理 首先,DNS会解析域名获取IP地址 而后TCP通过三次握手建立链接 建立链接后客户 ...

  2. 实现用户协议显示_HTTP协议工作原理及其特点

    HTTP协议工作原理及其特点 超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议,它通过两个程序实现:一个是客户端程序(各种浏览器),另一个是服务 ...

  3. 计算机网络rip工作原理,12. 小型网络 RIP 协议工作原理

    Re:计算机网络 静态路由和动态路由协议 ====================== # IP路由-网络层实现的功能: 网络畅通的条件 静态路由 路由汇总 默认路由 Windows上的路由表和默认路 ...

  4. ARP和RARP协议工作原理

    ARP和RARP协议工作原理 MAC地址与IP地址是计算机网络通信中非常重要的两类地址,缺一不可.因为在OSI/RM网络层以上是通过IP地址进行寻址的,而在OSI/RM网络层以下则是通过MAC地址进行 ...

  5. ARP协议工作原理及ARP欺骗(中间人攻击)

    网络中的数据传输所依赖的是MAC地址而不是IP地址,ARP协议负责将IP地址转换为MAC地址 ARP协议工作原理 ARP协议规定,每台计算机都需要一个ARP表,用来保存IP地址和MAC地址的映射关系 ...

  6. 【计算机网络】数据链路层 : CSMA/CA 协议 ( 载波监听多点接入 / 碰撞避免 协议 | CSMA/CA 协议工作原理 | CSMA/CD 协议 与 CSMA/CA 协议对比 )

    文章目录 一. CSMA/CA 协议 ( 非重点.仅作了解 ) 二.CSMA/CA 协议工作原理 三. CSMA/CD 协议 不能用于 无限局域网 的原因 四. CSMA/CD 协议 与 CSMA/C ...

  7. acme + acme-dns + google domains 签发泛域名证书

    acme + acme-dns + (google domains 或 cloudflare) 签发泛域名证书 1. acme.sh # 下载 curl https://get.acme.sh | s ...

  8. https与ssl的工作原理

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure, ...

  9. HTTP协议工作原理、工作过程

    1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少. ...

最新文章

  1. JavaScript学习笔记(2)——JavaScript和DOM的关系
  2. android多线程下载图片
  3. 【中级软考】多态与继承的概念
  4. postgresql 分词_使用PostgreSQL进行中文全文检索
  5. java aop 实例_Spring aop 简单示例
  6. “力挺Java!拒绝Python”9万程序员刷爆朋友圈……
  7. 根号x_【深情攻X自卑受】糖与盐by根号三
  8. JDBC连接数据库经验技巧集萃
  9. springBoot+JSP搭建项目
  10. 斐讯k2刷固件记录 版本22.6.512.75(最新2020)
  11. 服务器机箱销售跑哪些地方,网购主机老出问题?其实你早已上当受骗,这些猫腻很多人都不知道...
  12. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制
  13. U3d引擎崩溃、异常、警告、BUG与提示总结及解决方法
  14. 【MATLAB】基本绘图 ( plot 函数绘制多个图形 | legend 函数标注图形 | 图形修饰 )
  15. No qualifying bean of type ‘com.nanjing.cms.mapper.CrmBannerMapper‘ available: expected at least 1 b
  16. 图表制作工具之ECharts
  17. python怎么把程序挂在远端服务器_Python实现在远端服务器挂代码—发送定时天气预报至邮箱+每日一句(小白教程)...
  18. 黑帽子技能|爆破Android的锁屏密码
  19. ps 取html 颜色,Photoshop教程:PS如何从作品中提取色彩及其利用
  20. [系统分享]Windows 10 21H1 专业版 纯净无捆绑

热门文章

  1. StringBoot-plus 代码生成器
  2. java pmd checkstyle_Maven中集成pmd、checkstyle
  3. Vue之父传子,清晰易懂。
  4. ros中cpp节点创建
  5. 论文投稿指南——中文核心期刊推荐(机械、仪表工业2)
  6. IREP_SOA Integration SOAP概述(概念)
  7. 百度:地震姜常宏,求传播?!!
  8. C/C++中关于int *p[n]、int(*p)[n]、int*p()和int(*p)()巨详细实例解释
  9. 《Linux内核技术实战课》总结三:网络
  10. 【文本匹配】之 RE2论文详解