Skip to content

ssltlshttps相关概念

ssltlshttps三者之间的联系和区别

由于HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1,并同时发布“RFC2246-TLS加密协议详解”,如果想更深层次的了解TLS的工作原理可以去RFC的官方网站:www.rfc-editor.org,搜索RFC2246即可找到RFC文档! ——以上就是历史背景

HTTPS其实是由两部分组成的:HTTP+TLS/SSL,即HTTP下加入TLS/SSL层,HTTPS的安全基础就是TLS/SSL。服务端和客户端的信息传输都会通过TLS/SSL进行加密,所以传输的数据都是加密之后的数据。TLS的前身就是SSL协议,因此没有特别说明TLS/SSL说的都是同一个东西。

什么是x.509格式

X.509 是定义公钥证书格式的标准。X.509 证书是一种数字证书,它使用广泛接受的国际 X.509 公钥基础设施 (PKI) 标准来验证公钥是否属于证书中包含的主机名/域、组织或个人。X.509 证书由公众信任的(即浏览器信任它)证书颁发机构(如 DigiCert、Sectigo、GlobalSign 等)签名或自签名。当证书由受信任的证书颁发机构签名或通过其他方式验证时,持有该证书的人可以依赖其中包含的公钥与另一方建立安全通信,或验证由相应私钥数字签名的文档。

在HTTPS证书中,公钥通常以X.509标准格式存在。X.509证书只包含公钥信息,而不包含私钥。这些证书可以是PEM、DER或PFX/P12等格式,但无论哪种格式,都包含了公钥信息以及证书颁发机构(CA)的签名。

x.509DERPEMCRTPFX/P12JKS关系

SSL 证书格式普及,PEM、CER、JKS、PKCS12

可以到这里进行格式转换

X.509、DER、PEM、CRT、PFX/P12、JKS是密码学和网络安全领域中常见的术语,它们与公钥基础设施(PKI)和证书管理紧密相关。以下是对这些术语的详细解释:

1. X.509

  • 定义:X.509是ITU-T标准化部门制定的一套证书标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。它是公钥证书的格式标准,广泛应用于包括TLS/SSL在内的众多Internet协议中。
  • 特点:X.509证书包含公钥、身份信息(如网络主机名、组织名称或个体名称等)和签名信息(通常是证书签发机构CA的签名)。

2. DER

  • 定义:DER(Distinguished Encoding Rules)是一种用于编码ASN.1(Abstract Syntax Notation One)数据结构的二进制格式。在X.509证书中,DER常用于编码证书的二进制形式。
  • 特点:DER编码的证书通常是二进制文件,具有.der.cer扩展名。DER格式的文件内容不可直接阅读,需要通过特定的工具或库进行解析。
bash
# OpenSSL查看
openssl x509 -in certificate.der -inform der -text -noout

# 转换为 PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

3. PEM

  • 定义:PEM(Privacy-Enhanced Mail)是一种用于编码和传输ASCII字符串的文本格式,常用于存储和发送加密材料(如公钥、私钥和证书)。
  • 特点:PEM编码的证书文件通常以Base64编码,内容被"-----BEGIN CERTIFICATE-----"和"-----END CERTIFICATE-----"所包围。PEM格式的证书具有.pem.crt扩展名。
bash
# OpenSSL 查看
openssl x509 -in certificate.pem -text -noout

# 转换为 DER
openssl x509 -in cert.crt -outform der -out cert.der

4. CRT

  • 定义:CRT是Certificate的缩写,通常指X.509证书文件。CRT文件可以是DER编码的二进制文件,也可以是PEM编码的文本文件。
  • 特点:CRT文件主要用于存储公钥证书,具有.crt.cer.der等扩展名,具体取决于编码格式。

5. PFX/P12

  • 定义:PFX(Personal Information Exchange)和P12是同一加密证书格式的不同称呼,都是基于PKCS#12标准的。PKCS#12是一种用于存储私钥、公钥和证书链的容器格式。
  • 特点:PFX/P12文件通常包含私钥、公钥证书以及可能包含的其他证书(如中间证书),具有.pfx.p12扩展名。PFX/P12文件通常需要密码进行保护。
bash
# OpenSSL 查看
openssl pkcs12 -in for-iis.pfx

# 转换为 PEM
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes

6. JKS

  • 定义:JKS(Java KeyStore)是Java平台用于存储密钥和证书的一种容器格式。
  • 特点:JKS文件可以同时容纳多个公钥或私钥,以及相关的证书链。它主要用于Java应用程序中,用于管理密钥和证书。JKS文件通常以.jks.keystore.truststore等扩展名存在。

总结

  • X.509是公钥证书的格式标准,广泛应用于网络安全领域。
  • DER、PEM、CRT是X.509证书的不同编码和文件扩展名形式。
  • PFX/P12是基于PKCS#12标准的加密证书格式,用于存储私钥、公钥和证书链。
  • JKS是Java平台用于存储密钥和证书的一种容器格式。

什么是CSR

在HTTPS中,CSR代表Certificate Signing Request(证书签名请求)。它是申请数字证书过程中的一个重要组成部分,具体信息如下:

一、定义与用途

CSR是一个包含有关网站、服务、组织和域名等信息的编码文件。这些信息由证书颁发机构(Certificate Authority,简称CA)用于为网站创建SSL/TLS证书,以加密到网站的流量。CSR文件的主要用途是向CA申请数字证书,以便实现HTTPS加密传输、身份认证等功能。

二、包含内容

CSR文件通常包含以下信息:

  • 公钥:用于加密发送到服务器的数据,只有对应的私钥才能解密。
  • 证书持有者信息:如名称、城市、州、国家和电子邮件地址等。
  • 域名:证书将要保护的域名列表。
  • 签名:使用私钥对CSR中的信息进行的数字签名,用于验证CSR的完整性和来源。

三、生成与提交

CSR文件通常由网站管理员在Web服务器上生成,可以通过命令行工具(如OpenSSL)或Web服务器控制面板完成。生成后,CSR文件需要被提交给CA,CA会审核CSR中的信息,并可能要求提供额外的验证材料。一旦审核通过,CA将颁发一个数字证书给申请人,该证书包含了与CSR中相同的信息,但由CA签名以验证其有效性。

四、HTTPS与CSR的关系

HTTPS(超文本传输安全协议)是一种基于HTTP的加密传输协议,它通过SSL/TLS协议对传输的数据进行加密,以确保数据在传输过程中的安全性和完整性。在HTTPS中,数字证书是确保服务器身份真实性和数据传输安全性的关键。而CSR则是获取这些数字证书的重要步骤之一,通过向CA提交CSR文件,网站管理员可以为其网站申请到由受信任机构颁发的数字证书,从而实现HTTPS加密传输和身份认证等功能。

五、总结

综上所述,CSR在HTTPS中扮演着至关重要的角色,它是申请数字证书过程中的关键步骤之一。通过生成并提交CSR文件,网站管理员可以为其网站申请到由受信任机构颁发的数字证书,从而确保用户与网站之间通信的安全性和可靠性。

CA机构颁发证书原理

CA机构(Certification Authority,证书颁发机构)颁发证书的原理主要基于公钥基础设施(PKI)体系,通过一系列严格的步骤来确保数字证书的真实性和可信度。以下是CA机构颁发证书的主要原理及步骤:

一、原理概述

CA机构作为可信任的第三方实体,通过公钥加密技术和数字签名技术,对数字证书的发放和管理进行严格的控制,从而确保数字证书在网络通信中的真实性和可信度。

二、主要步骤

  1. 证书请求:
    • 用户(如个人、企业等)向CA机构提交证书申请,通常需要提供身份信息、公钥等必要信息。
    • 用户可能会生成一个证书签署请求(CSR)文件,其中包含了公钥和申请者信息,并以数字签名形式进行保护。
  2. 申请审核与身份验证:
    • CA机构对用户的申请进行审核,确保申请信息的真实性和合法性。
    • CA机构还会对用户进行身份验证,这一步骤可能包括核对用户的身份证件、通过邮件或电话确认用户身份等。
    • 对于企业用户,还可能需要进行企业相关信息的人工核实,确保企业的真实性。
  3. 证书签发:
    • 身份验证通过后,CA机构会为用户生成数字证书。
    • 数字证书包含用户的公钥、身份信息、证书的有效期限以及CA机构的数字签名。
    • CA机构使用自己的私钥对证书内容进行签名,以确保证书的真实性和不可篡改性。
  4. 证书发布与存储:
    • CA机构将生成的数字证书发送给用户。
    • 同时,CA机构还会将数字证书的公钥和CA机构的根证书发布到公共的证书库中,以便其他用户验证证书的真实性。

三、关键技术

  • 公钥加密技术:利用公钥和私钥的配对关系进行加密和解密操作,确保数据传输的安全性。
  • 数字签名:CA机构使用私钥对证书内容进行签名,用户可以使用CA机构的公钥进行验证,以确认证书的真实性和完整性。

四、作用与意义

  • CA机构颁发的数字证书为网络通信提供了身份认证和加密通信的基础。
  • 通过验证数字证书的真实性,用户可以确认通信对方的身份和可信度,从而建立起安全可靠的通信环境。
  • CA机构在网络安全中起到了重要的作用,可以有效防止信息被篡改和伪造,保护用户的隐私和数据安全。

综上所述,CA机构颁发证书的原理是一个复杂而严谨的过程,涉及证书请求、申请审核与身份验证、证书签发以及证书发布与存储等多个环节。这一过程基于公钥加密技术和数字签名技术,确保了数字证书的真实性和可信度,为网络通信提供了安全保障。

https加密通讯原理

数字签名和数字证书究竟是什么?

人物模拟:HTTPS加密通讯过程

角色介绍

  • Alice:客户端,比如你的浏览器,想要安全地从服务器获取信息。
  • Bob:服务器,比如一个网站,存储着Alice想要访问的数据。
  • Charlie:证书颁发机构(CA),负责验证和颁发数字证书,确保公钥的真实性。

通讯过程

1. Alice发起HTTPS请求
  • Alice在浏览器中输入HTTPS的URL,并按下回车键。
  • 浏览器(代表Alice)尝试与服务器(Bob)建立TCP连接,但这次连接是请求HTTPS端口的。
2. TCP连接建立
  • Bob(服务器)接受来自Alice的TCP连接请求,并在HTTPS端口上建立连接。
  • 此时,连接是未加密的,但双方已准备好进行SSL/TLS握手。
3. SSL/TLS握手开始
  • Bob发送数字证书给Alice:
    • Bob将自己的数字证书(由Charlie颁发,包含公钥和其他信息)发送给Alice。
  • Alice验证数字证书:
    • Alice收到证书后,首先检查证书是否由她信任的CA(Charlie)颁发。
    • 然后,她验证证书是否有效(未过期、未被吊销),以及证书中的域名是否与请求的URL匹配。
    • 如果验证通过,Alice会信任证书中的公钥,并准备使用它进行后续的加密通讯。
4. 密钥交换和会话密钥生成
  • Alice生成随机数R1并发送给Bob

    (在实际的TLS握手过程中,这一步可能稍有不同,但这里为了简化流程,我们假设它是这样发生的):

    • Alice生成一个随机数R1,并将其发送给Bob(在TLS握手过程中,这个信息通常是作为“Client Hello”消息的一部分发送的,但并不直接包含随机数,而是通过后续的消息交换来生成会话密钥所需的材料)。
  • Bob响应并发送自己的随机数R2:

    • Bob收到Alice的信息后,也生成一个随机数R2,并选择一个双方都支持的加密算法。
    • Bob将R2、加密算法以及自己的数字证书(如果之前没发送的话)一起发送给Alice。
  • Alice和Bob使用非对称加密交换信息:

    • Alice使用Bob的公钥(从证书中获取)加密一个随机数R3,并将其发送给Bob。
    • Bob使用自己的私钥解密得到R3。
  • 共同生成会话密钥:

    • Alice和Bob都拥有R1、R2和R3(或者通过类似方式生成的其他材料),他们使用之前选定的加密算法和这些材料共同生成一个会话密钥。
5. 加密通讯开始
  • 一旦会话密钥生成完成,Alice和Bob就可以开始使用会话密钥进行加密通讯了。
  • Alice发送加密后的HTTP请求给Bob(实际上是HTTP协议的内容被封装在SSL/TLS加密的数据包中)。
  • Bob解密请求数据,处理请求,并发送加密后的HTTP响应给Alice。
  • Alice解密响应数据,展示给用户,完成整个HTTPS通讯过程。

HTTPS加密通讯原理

HTTPS加密通讯原理主要依赖于SSL/TLS协议,该协议通过非对称加密、对称加密和哈希算法等多种加密技术来确保数据传输的安全性、身份验证和完整性保护。

  • 非对称加密:用于证书验证和密钥交换阶段,确保公钥的安全传输和会话密钥的安全生成。
  • 对称加密:用于数据传输阶段,加密和解密速度快,适合大量数据的传输。
  • 哈希算法:用于验证数据的完整性,确保数据在传输过程中未被篡改。

通过这种方式,HTTPS协议能够有效地保护客户端和服务器之间的数据传输安全,防止数据被窃取或篡改,并确保通信双方的身份验证。

浏览器如何验证证书的合法性呢?

浏览器验证证书合法性的过程是一个复杂但至关重要的安全机制,它确保了用户与合法、安全的服务器进行通信。以下是浏览器验证证书合法性的主要步骤:

1. 获取网站的证书

当用户通过浏览器访问HTTPS站点时,浏览器会首先向服务器请求其SSL/TLS证书。这个证书包含了服务器的公钥、证书颁发机构(CA)的信息、证书的有效期以及域名等关键信息。

2. 验证证书颁发机构

浏览器会检查证书是否由受信任的证书颁发机构(CA)签发。这是通过比对证书中的CA信息与浏览器内置的受信任CA列表来完成的。如果证书是由未知的或不受信任的CA签发的,浏览器将不会信任该证书。

3. 检查证书的有效期

浏览器会验证证书的有效期,确保证书没有过期。过期的证书可能不再安全,因此浏览器会拒绝与使用过期证书的服务器建立安全连接。

4. 验证证书是否适用于当前域名

浏览器会检查证书中的主题名称字段,以确保证书表示的域名与用户正在访问的域名相匹配。这是为了防止中间人攻击,确保用户与正确的服务器进行通信。

5. 验证证书的公钥

浏览器会验证证书中包含的公钥,以确保它们可以安全地将数据传输给服务器。公钥是加密和解密数据的关键,因此其完整性和真实性至关重要。

6. 检查证书链

浏览器还会验证证书链中的所有证书是否都是有效的,并且是由受信任的CA签发的。证书链是一个从服务器的证书到根CA证书的信任链,它证明了服务器的证书是可信的。

7. 撤销检查

浏览器还会检查证书是否已被撤销。这是通过查询证书撤销列表(CRL)或在线证书状态协议(OCSP)来完成的。如果证书已被撤销,浏览器将不会信任该证书。

8. 显示安全指示

如果证书通过了所有验证步骤,浏览器将显示一个安全锁或其他安全指示,表示连接是私密且安全的。用户可以放心地继续浏览网站或进行其他在线活动。

9. 警告用户

如果证书验证失败,浏览器将向用户发出警告,提示用户潜在的安全风险,并建议用户不要继续与该站点进行通信。这有助于防止用户受到恶意攻击或数据泄露的风险。

注意事项

  • 用户应定期更新浏览器和操作系统,以获取最新的安全修复程序和证书机构信任列表。
  • 如果遇到证书警告,用户应谨慎处理,并考虑使用其他方式验证网站的安全性。
  • 在输入敏感信息之前,用户应始终确认网站是合法和可信的。

通过以上步骤,浏览器能够有效地验证证书的合法性,保护用户的在线安全和隐私。

证书链信息是包含在网站的证书中吗?

证书链信息并不直接包含在网站的单个证书中,而是由多个证书组成的一个信任链,从服务器的证书(也称为终端证书或用户证书)开始,一直到根证书颁发机构(CA)的证书结束。这个信任链通过一系列的数字签名和验证过程,确保证书的合法性和信任链的完整性。

具体来说,证书链的验证过程如下:

  1. 接收服务器证书:当浏览器访问HTTPS网站时,服务器会将其SSL/TLS证书(即用户证书)发送给浏览器。这个证书包含了服务器的公钥、域名、有效期等信息,以及一个指向颁发者(即中间CA或根CA)的签名。
  2. 验证证书颁发机构:浏览器首先会检查服务器证书是否由受信任的CA签发。这是通过比对证书中的颁发者信息与浏览器内置的受信任CA列表来完成的。如果颁发者不在受信任列表中,浏览器将不会信任该证书。
  3. 构建证书链:如果服务器证书是由受信任的CA签发的,浏览器会尝试构建证书链。这通常涉及从服务器证书开始,逐级向上查找并验证每个中间CA的证书,直到找到根CA的证书为止。在这个过程中,浏览器会验证每个证书的数字签名、有效期、用途等信息,以确保它们都是有效和可信的。
  4. 验证根CA证书:最后,浏览器会验证证书链的根证书是否由受信任的根CA颁发。根CA是证书信任链的起点,它们的证书被直接内置在浏览器和其他安全软件中。如果根证书不受信任,那么整个证书链也将被视为无效。

需要注意的是,虽然证书链信息不是直接包含在单个证书中的,但服务器在响应HTTPS请求时,通常会同时发送服务器证书以及必要的中间CA证书(如果有的话),以便浏览器能够构建完整的证书链并进行验证。在某些情况下,如果服务器没有发送必要的中间CA证书,浏览器可能无法成功构建证书链并验证证书的有效性。因此,在部署SSL/TLS证书时,确保服务器能够正确地发送完整的证书链是非常重要的。

全世界只有一个根CA机构吗?

全世界并非只有一个根CA(证书颁发机构)机构。实际上,全球存在多个受信任的根CA机构,它们共同构成了互联网的安全基础设施。

这些根CA机构负责签发和管理数字证书,这些证书是HTTPS、SSL/TLS等加密通信协议中用于验证服务器身份和建立加密连接的关键。全球知名的根CA机构包括但不限于:

  • DigiCert:全球最大的CA颁发机构之一,拥有多个知名的子品牌,如Symantec、GeoTrust等。DigiCert在网站安全、电子邮件安全、数据泄露防护和SSL证书领域具有重要地位。
  • GlobalSign:全球知名的数字证书颁发机构,也是全球最早的CA之一。GlobalSign的SSL证书产品在电商行业中深受欢迎。
  • Sectigo(原Comodo CA):全球SSL证书市场占有率较高的CA公司,其产品安全且价格相对较低,受到大量站长的信任和欢迎。
  • GeoTrust:专注于企业级SSL证书解决方案的CA机构,为各种规模的企业提供高性价比的数字证书。
  • Entrust:欧洲多家银行机构的主要SSL/TLS证书服务提供商,拥有丰富的行业经验和技术实力。

此外,还有其他许多国家和地区也拥有自己的CA机构,这些机构可能在本地区域内具有较高的知名度和影响力。

需要注意的是,虽然全球存在多个根CA机构,但并非所有CA机构都受到所有浏览器和操作系统的信任。为了确保证书的广泛兼容性,CA机构通常需要经过严格的审核和认证过程,以获得浏览器和操作系统的信任。同时,用户也可以在自己的设备中手动添加受信任的CA机构,以便能够验证由这些机构签发的证书。

综上所述,全世界并非只有一个根CA机构,而是存在多个受信任的CA机构共同维护互联网的安全和稳定。

windows系统中如何查看所有预安装的根证书呢?

在Windows系统中,查看所有预安装的根证书可以通过Microsoft管理控制台(MMC)与证书管理单元配合使用来完成。以下是在Windows 10/11系统中查看所有预安装的根证书的具体步骤:

一、打开Microsoft管理控制台(MMC)

  1. 打开“运行”对话框:按Windows键 + R打开“运行”对话框。
  2. 输入MMC命令:在“运行”对话框中,键入mmc,然后按Enter键。这将打开Microsoft管理控制台。

二、添加证书管理单元

  1. 添加管理单元:在MMC窗口中,单击菜单栏中的“文件”(File),然后选择“添加/删除管理单元”(Add/Remove Snap-in)。
  2. 选择证书:在“添加或删除管理单元”窗口中,向下滚动,找到并选择“证书”(Certificates),然后单击“添加”(Add)>。
  3. 选择证书存储位置:在弹出的窗口中,选择要管理的证书类型。通常,为了查看所有预安装的根证书,应选择“计算机帐户”(Computer account),然后单击“下一步”(Next)。
  4. 选择计算机:在“选择计算机”窗口中,选择“本地计算机:(此控制台正在其上运行的计算机)”(Local computer: (the computer this console is running on)),然后单击“完成”(Finish)。也可以根据需要选择“我的用户帐户”(My user account)或服务帐户,但对于访问受信任的根证书颁发机构,通常选择“计算机帐户”。
  5. 关闭添加管理单元窗口:单击“确定”(OK),以关闭“添加或删除管理单元”窗口。

三、查看根证书

  1. 展开证书树:在MMC的“证书(本地计算机)”(Certificates (Local Computer))树下,展开“受信任的根证书颁发机构”(Trusted Root Certification Authorities)文件夹。
  2. 查看根证书:单击“受信任的根证书颁发机构”下的“证书”(Certificates)。这将显示计算机当前信任的所有根证书。

四、管理根证书

在此处,你可以查看每个根证书的详细信息、导入新的受信任证书或删除现有证书。但请谨慎添加或删除证书,因为这可能会影响系统的安全性和功能。

注意事项

  • 进行此类操作时,可能需要管理员权限。
  • 不适当的更改可能会危及系统的安全性。
  • 默认情况下,“受信任的根证书颁发机构”证书存储配置有一组符合Microsoft根证书计划要求的公共CA。管理员可以配置默认的受信任的CA集,并安装自己的专用CA来验证软件。

通过以上步骤,你可以轻松地在Windows系统中查看所有预安装的根证书。