跳到主要内容

ca

· 阅读需 10 分钟
南哥

什么是自签名证书

自签名证书(Self-signed certificate)是一种数字证书,其签名者和证书所有者相同。这意味着证书是由其所有者自己签发的,而不是由受信任的证书颁发机构(CA)签发。自签名证书主要用于测试、开发和内部使用,通常不适用于公共互联网服务,因为其缺乏信任链。

当客户端(如浏览器)访问使用自签名证书的服务器时,通常会收到一个安全警告,提示证书不受信任。这是因为浏览器无法验证自签名证书的合法性,所以在使用自签名证书时需要谨慎。尽管如此,自签名证书仍然可以提供数据加密,以保护数据在传输过程中的安全。但由于它们无法证明服务器的身份,因此更容易受到中间人攻击。

tls详细原理

tls (Transport Layer Security)是一种安全协议,用于在互联网上为客户端和服务器之间的通信提供加密和身份验证

  1. 握手阶段:客户端(如浏览器)与服务器建立连接时,首先进行 SSL/TLS 握手。客户端会发送一个 "ClientHello" 消息,包含支持的加密套件、协议版本以及一个随机数。

  2. 服务器响应:服务器收到 "ClientHello" 消息后,会选择一个加密套件(从客户端提供的选项中选择),并发送一个 "ServerHello" 消息。同时,服务器会发送其数字证书,以证明自己的身份。

  3. 客户端验证:客户端收到服务器的证书后,会验证证书的有效性。这通常包括验证证书的签名、有效期以及证书颁发机构(CA)的信任。如果证书验证失败,客户端会中断连接并给出警告。

  4. 密钥交换:客户端验证证书成功后,会使用服务器证书中的公钥对一个预主密钥(Pre-master secret)进行加密,并将其发送给服务器。这个预主密钥只能由服务器的私钥解密。此时,客户端和服务器都有了预主密钥,然后双方根据预主密钥和之前交换的随机数生成相同的主密钥(Master secret)。

  5. 完成握手:客户端和服务器使用主密钥生成会话密钥(Session keys),这些会话密钥用于加密和解密数据,以及验证数据完整性。双方发送 "Finished" 消息,确认握手已完成。

  6. 加密通信:握手完成后,客户端和服务器使用会话密钥加密和解密数据进行通信。这样,即使数据被拦截,攻击者也无法阅读原始内容,保证了数据的机密性和完整性。

第三步,如何验证是非自签名的

在SSL/TLS握手的第三步中,客户端验证服务器证书以确认服务器身份。验证非自签名证书涉及以下几个关键步骤:

  1. 检查证书颁发机构(CA):非自签名证书是由受信任的证书颁发机构颁发的。客户端(如浏览器)通常内置有一个受信任CA列表。当收到服务器证书时,客户端会检查证书签名中的CA是否在其受信任的列表中。如果不在列表中,证书可能会被视为不受信任。

  2. 验证证书链:一个有效的非自签名证书需要具有完整的证书链,从服务器证书到根CA证书。证书链中可能包含一个或多个中间CA证书。客户端会按照证书链,逐个验证每个证书的签名,直到到达受信任的根CA。这个过程构建了一个信任链,证明了服务器证书的有效性。

  3. 检查证书有效期:客户端需要检查服务器证书的有效期,确保证书在有效期内。如果证书已过期,客户端会认为证书不可信。

  4. 检查证书吊销状态:证书可能在其有效期内被吊销。客户端可以通过在线证书状态协议(OCSP)或证书吊销列表(CRL)检查证书的吊销状态。如果证书被吊销,客户端将不再信任它。

  5. 检查服务器域名:为了防止中间人攻击,客户端需要检查服务器证书中的域名是否与访问的域名一致。如果域名不匹配,客户端会认为证书不可信。

通过以上步骤,客户端可以验证非自签名证书的有效性。只有当所有检查均通过时,客户端才会认为证书可信并继续SSL/TLS握手过程。

要获取一个SSL/TLS证书,您需要经历以下步骤

  1. 选择证书颁发机构(CA):首先,您需要选择一个受信任的证书颁发机构,如Let's Encrypt、DigiCert、GlobalSign等。这些机构颁发的证书在绝大多数浏览器和操作系统中都会被接受。

  2. 生成CSR和私钥:在您的服务器上生成一个证书签名请求(CSR)和相应的私钥。CSR包含您的网站信息,如域名、组织名称、地理位置等。您可以使用OpenSSL或其他工具生成CSR和私钥。

  3. 提交CSR:将CSR提交给所选的证书颁发机构。他们将验证您的网站和组织信息。对于域名验证(DV)证书,您只需证明对域名的所有权;对于组织验证(OV)和扩展验证(EV)证书,您还需要提供公司和联系信息的证明。

  4. 验证域名所有权:证书颁发机构会要求您验证对申请证书的域名的所有权。通常有以下几种验证方法:

  • 通过DNS记录:在您的域名的DNS设置中添加一个特定的TXT记录。
  • 通过文件验证:在您的网站服务器上放置一个特定的文件,证书颁发机构将通过访问该文件进行验证。
  • 通过电子邮件验证:接收和回复证书颁发机构发送到域名注册联系人电子邮件中的验证代码。
  1. 领取证书:验证成功后,证书颁发机构将向您提供数字证书。通常,您会收到一个包含证书链的文件,其中包括您的服务器证书、中间证书和根证书。

  2. 安装证书:将证书文件安装到您的服务器上,并配置Web服务器以使用SSL/TLS。具体安装步骤因Web服务器类型(如Apache、Nginx、IIS等)而异。在安装过程中,请确保同时配置私钥和证书链。

  3. 测试证书:在安装证书后,使用浏览器或在线SSL检查工具测试您的网站以确保证书已正确安装。

请注意,证书的有效期通常为1-2年,因此您需要在证书过期前进行续期。有些证书颁发机构(如Let's Encrypt)提供自动续期功能,这可以简化维护过程。