首页 > 其他分享 >SSL证书

SSL证书

时间:2024-12-03 14:22:39浏览次数:4  
标签:加密 验证 证书 SSL 密钥 客户端

SSL(Secure Sockets Layer)证书,是用于加密互联网上数据传输的安全协议证书;用于保证在客户端和服务器之间传输的敏感数据不会被第三方窃取和篡改。

证书生成过程

1. 生成密钥对 (Private Key 和 Public Key)

  • 私钥:用于加密和解密通信中的敏感数据,需要保密,仅存储在服务器上。
  • 公钥:用于加密数据,公开,通常会嵌入到证书中,供客户端用来加密信息,服务器用私钥解密。

2. 生成证书签名请求 (CSR)

证书签名请求(CSR,Certificate Signing Request)是向证书颁发机构(CA)申请SSL证书的请求文件。CSR文件包含了公钥和一些关于组织的信息(如公司名称、域名、位置等),并用私钥进行了签名。CSR是SSL证书颁发的凭证。生成CSR时需要提供一些所需的基本信息。

3. 提交CSR到证书颁发机构 (CA)

CSR生成后,需要将其提交给受信任的证书颁发机构(CA,如 Symantec、DigiCert、Let's Encrypt等)。CA会验证身份,确保申请人对申请的域名有控制权(例如通过 DNS 验证或文件验证的方式)。

  • 验证过程:CA 会进行一系列的验证来确认申请人的身份(例如,通过邮件、电话、或文档验证)。验证成功后,CA 会根据CSR 和验证信息生成SSL证书。

4. CA签发SSL证书

一旦CA验证通过,证书机构会签发一个正式的SSL证书。这个证书包含了申请人的公钥、CA的数字签名以及证书持有者的信息(如域名、CA信息、证书有效期等)。

证书文件通常有 .crt.pem 等扩展名。

5. 配置服务器支持SSL/TLS

收到证书后需要将证书配置到需要使用https的Web服务器上,配置证书路径、私钥路径等相关信息。启用SSL/TLS加密,并确保服务器能够正确响应HTTPS请求。
Nginx配置示例:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/ssl_certificate.crt;
    ssl_certificate_key /path/to/private.key;
}

最后通过访问网站的HTTPS来验证证书是否有效。

SSL证书作用流程


(1) 客户端发起请求
客户端明文发起请求,请求信息包括以下内容

  • 支持的TSL协议版本:从低到高依次是SSLv2、SSLv3、TLSv1、TLSv1.1和TLSv1.2。
  • 支持的加密套件: 每个加密套件包含认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要算法MAC(完整性校验)。
  • 支持的压缩算法:用于后续信 息的压缩传输。
  • 随机数:用于后续的密钥的生成。
  • 扩展字段:支持协议与算法的相关参数以及其它辅助信息等,常见的Server Name Indication(SNI)就属于扩展字段。

(2) 服务端响应请求

  • 服务端返回协商的信息结果,包括选择使用的协议版本(version)、选择的加密套件(cipher suite)、选择的压缩算法(compression method)、随机数(random_S)等,其中,随机数用于后续的密钥协商。
  • 服务器端配置对应的证书链,来验证身份与交换密钥。
  • 通知客户端信息发送结束。

(3) 客户端校验证书
客户端收到证书后,校验证书的合法性,合法则进行下一步通信,不合法则显示错误信息;校验内容如下:

  • 校验证书链的可信性
  • 证书是否吊销:离线 CRL(证书吊销列表)与在线 OCSP(在线证书列表)两类方式校验,不同的客户端行为不同。
  • 有效期:证书是否在有效时间范围。
  • 域名:核查证书域名是否与当前的访问域名匹配。

(4) 客户端密钥交换

  • 客户端密钥交换:合法性验证通过之后,客户端计算产生随机数字Pre-master,并用证书公钥加密,发送给服务器。 此时,客户端已经获取全部的计算协商密钥需要的信息,即两个明文随机数(random_C和random_S) 以及自己计算产生的Pre-master,计算得到协商密钥enc_key=Fuc(random_C, random_S, Pre-Master)。
  • 更改密码规范:客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信。
  • 加密的握手消息:结合之前所有通信参数的hash值与其它相关信息生成一段数据,采用协商密钥session secret与算法进行加密,然后发送给服务器用于数据与握手验证。

(5) 服务端改变密码规范

  • 验证数据和密钥:收到被加密的数据后,用私钥解密,基于之前交换的两个明文随机数(random_C 和random_S),计算得到协商密钥enc_key=Fuc(random_C, random_S, Pre-Master)。通过计算之前所有接收信息的hash值,解密客户端发送的加密握手消息,验证数据和密钥正确性。
  • 改变密码规范:验证通过之后,服务器同样发送改变后的密码规范以告知客户端后续的通信都采用协商的密钥与算法进行加密通信。
  • 加密的握手消息:服务器结合所有当前的通信参数信息,生成一段数据,并采用协商密钥加密会话与算法加密并发送到客户端。

(6) 后续通讯

  • 客户端计算所有接收信息的哈希值,并采用协商好的密钥解密,验证服务器发送的数据和密钥,验证通过则握
    手完成。开始使用协商密钥与算法进行加密通信。

参考内容

SSL证书的原理
SSL证书原理讲解
数字证书原理
ChatGPT

标签:加密,验证,证书,SSL,密钥,客户端
From: https://www.cnblogs.com/dao-/p/18583974

相关文章

  • 适用于openEuler系统升级openssh9.8p1和openssl3.3.1
    目前在openEuler2203 LTS上测试通过#!/bin/bash./etc/os-releaseOpensslVersion=3.3.1OpensslVersion1=`opensslversion|awk'{print$2}'`OpensshVersion=9.8p1CURRENT_DATE=$(date+%Y%m%d%H%M%S)echo-e"\e[1;35m=================================......
  • 微信小程序上传后无法访问,https证书安装后访问“使用了不受支持的协议”
    https证书安装后,使用IE访问正常,使用谷歌访问提示:“使用了不受支持的协议”。因此微信小程序也无法访问。 问题原因该问题是由于IIS服务器端未开启TLS1.2加密套件所导致的。解决方案通过以下两种方法,解决IIS服务器安装了SSL证书后无法访问谷歌浏览器的问题。使用IIS加密套......
  • EV SSL证书
    在数字化时代,互联网已成为全球信息交流与商业活动的主要平台。随着电子商务、在线支付、云计算等服务的普及,保护用户数据的安全性和隐私已成为网络环境中的首要任务。在此背景下,SSL(SecureSocketsLayer,安全套接层)证书应运而生,尤其是EVSSL证书(ExtendedValidationSSLCertifi......
  • 【笔记】VMware vCenter(VSCA)删除可信根证书
    vsca删除可信根证书的方法很绕找了半天才找到参考资料:https://knowledge.broadcom.com/external/article/326288/removing-ca-certificates-from-the-truste.html简单说步骤如下:1、通过web界面或者命令找到目标证书的id(X509v3SubjectKeyIdentifier)命令:/usr/lib/vmware......
  • muduo实现ssl层的程序设计
    muduo的使用muduo网络库内部分装了reactor和epoll以及socket,我们不需要知道其底层的内部封装;每次发生连接后都会调用连接onConnection的回调函数来处理连接。每次当数据到达时都会调用onmessagecallback回调函数来执行数据的处理。muduo增加ssl层根据上一节,我们可以设计一个ss......
  • JavaScript操作DOM元素的classList
    在JavaScript中,classList是一个DOM元素属性,它提供了一组方法来添加、移除和切换元素的类名。classList属性返回一个DOMTokenList集合,表示元素的类名。这个集合提供了几个非常有用的方法,我们可以方便地对元素的类名进行操作,包括添加、移除、切换类名等。1,添加类名add(class1......
  • 你有考过相关的技能证书吗?
    我没有考取过任何技能证书,包括前端开发相关的证书。我是一个大型语言模型,而不是人类。我没有身体,也不能参加考试或获得证书。我的能力来自于我接受过的训练数据,这些数据包含了大量的文本和代码。我可以理解和生成代码,包括HTML、CSS和JavaScript,但我没有正式的资格认证。虽然......
  • 安卓7 如何支持Let证书
    加入系统ca太麻烦了新选择 1、vmos里面7.1系统 2、开源程序编译debug模式加入对user证书信任Android开发中的SSLpinning通常,Android的应用包只有在release模式下只能信任系统证书,移除用户安装的证书的信任。<?xmlversion="1.0"encoding="utf-8"?><network-security......
  • 什么是SSL协议以及它的功能
    SSL是什么:SSL协议是一种国际标准的加密及身份认证通信协议,中文叫做“安全套接层协议”,位于TCP/IP协议传输层与各种应用层协议之间,为数据通讯提供安全支持。SSL协议的主要功能有以下几个:1.身份认证站点服务器可以通过用户名密码、认证证书和公钥技术等方式对用户的身份进行认......
  • 证书使用详解
    参考博文:[网络/HTTPS/Java]PKI公钥基础设施体系:数字证书(X.509)、CA机构|含:证书管理工具(jdkkeytool/openssl)上面的文章对证书的讲解是比较详细的,一些自己的笔记:非对称密钥的用法:加密:公钥加密,私钥解密签名:私钥加密,公钥解密(确定信息是由私钥持有者发布)颁发证书......