立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 316|回复: 5

[分享] CA证书是如何确保服务器身份的?

[复制链接]
发表于 2025-3-3 10:26 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
我已经大概懂了对称加密、不对称加密、对称+不对称加密的大概原理。
但是对于防止冒充的CA证书原理有点没懂:
网上查到浏览器访问网站时,服务器会首先向浏览器发送CA机构颁发的证书,以证明自己的身份,可是每个浏览器向这个服务器请求到的证书都是一样的,也就是说证书是公开的,那么攻击者是否就可以复制这份证书来冒充这个服务器呢?
比如我访问http://a.com,如何确定响应我的请求的一定是http://a.com呢?攻击者可以拿着http://a.com的证书跟我说他就是http://a.com啊,难道是核对响应者的ip地址与证书上是否一致吗?证书上会记录ip地址这个信息吗?
------通过各位答主的回答我总结的答案:----
攻击者是可以用服务器的CA证书来冒充服务器的,但是因为CA证书上面携带了服务器的公钥,后续客户端要用这个公钥来加密通讯信息,而攻击者没有私钥无法解密信息,所以冒充了也没用,所以CA证书并非直接的证明了响应者的身份,而是通过携带公钥的方式,让冒充者就算冒充了也没用,不知道我理解的对不对?

原文地址:https://www.zhihu.com/question/653634879
楼主热帖
回复

使用道具 举报

发表于 2025-3-3 10:26 | 显示全部楼层
首先,服务器给每个域名回应的证书并不一样,比如百度的域名http://www.baidu.com和新浪的域名http://www.sina.com的证书本来就不一样。因此服务器给浏览器响应的证书就不一样。另外,你说的冒用的问题,第一,数字证书只有公钥信息,没有私钥信息,你冒用没有用;就算最后你重定向到了黑客网站,他没有私钥无法解密。因为私钥都是在用户手里,比如百度;当然CA服务器也会有,但是你凭什么拿得到?第二,这里有个信任的问题,一个非法网站是无法做到交叉信任的,因为你没有证书链。证书的授权是一级扣一级的。



数字证书的格式,里面肯定没有IP

CA是公钥基础设施(PKI)体制下的一个实体,其他主要实体还包括RA、终端实体(End Entity)、客户端、目录服务器
CA的出现源于公钥密码体制的使用扩展,因为公钥密码体制不仅能够实现加密服务,而且也能提供识别和认证服务。
但是,除了保密性之外,公钥密码可信分发也是其所面临的问题,毕竟公钥是公开的,怎么确认公钥的真实归属是一个难题,即公钥的真实性和所有权问题。
针对该问题,人们采用“公钥证书”的方法来解决,类似居民身份证、护照。公钥证书是将实体和一个公钥绑定,并让其他的实体能够验证这种绑定关系。为此,需要一个可信第三方来担保实体的身份,这个第三方称为认证机构,简称CA (Certification Authority)。CA负责颁发证书,证书中含有实体名、公钥以及实体的其他身份信息。
CA的关键在于“可信”就像大家都信任公安局颁发的身份证一样;你用自己的身份证就可以证明你的身份,无需质疑,因为公安局是大家的“可信”机构。
具体到计算机领域,如果确保CA的可信呢,这个还是源于公钥密码体制,CA根证书机构采用自生成公钥,私钥,自颁发证书(采用X.509格式)
CA服务器是整个证书机构的核心,负责证书的签发。CA首先产生自身的私钥和公钥(秘钥长度至少1024位),然后生成数字证书,并且将数字证书传输给安全服务器。CA还负责为操作员、安全服务器及注册机构服务器生成数字证书。安全服务器的数字证书和私钥也需要传输安全服务器。CA服务器是整个结构中最重要的部分,存有CA的私钥以及发行证书的脚本文件,处于安全考虑,应将CA服务器与其他服务器隔离,任何通信采用人工干预的方式,确保认证中心的安全。
秘钥管理也是PKI(主要是指CA)中的一个核心功能,主要是指秘钥对的安全管理、包括秘钥产生、秘钥备份、秘钥恢复和秘钥更新等。
另外,CA采用的是多层结构,证书机构层次是从根CA开始,根CA下面有一个或多个二级CA,每个二级CA下面有一个或多个三级CA,等等。CA层级还使得根CA不必管理所有数字证书,而可以把这个任务委托给二级机构。
根CA(有时可以是二级或三级CA)自动作为可信任CA,为此,取得证书主体的软件(通常是个Web浏览器,但也可以是任何能够存储与验证证书的软件)包含预编程、硬编码的根CA证书。另外,这个根CA证书是自签名证书,即根CA对自己的证书签名,简单点说,这个证书的签发者名和主体名都指向根CA。
认证机构(CA)的职能:
①生成密钥对 (也可以由用户生成)
生成密钥对有两种方式:一种是由PKI用户自行生成,一种是由认证机构来生成。在认证机构生成用户密钥对的情况下,认证机构需要将私钥发送给用户,这时就需要使用PKCS#12(Personal Information Exchange Syntax Standard)等规范。
②在注册公钥时对本人身份进行认证, 生成并颁发证书
在用户自行生成密钥对的情况下,用户会请求认证机构来生成证书。申请证书时所使用的规范是由PKCS#10(Certification Request Syntax Standard)定义的。
认证机构根据其认证业务准则(Certification Practice Statement,CPS)对用户的身份进行认证,并生成证书。在生成证书时,需要使用认证机构的私钥来进行数字签名。生成的证书格式是由PKCS#6 (Extended-Certificate Syntax Standard)和 X.509定义的。
③作废证书
当用户的私钥丢失、被盗时,认证机构需要对证书进行作废(revoke)。此外,即便私钥安然无恙,有时候也需要作废证书,例如用户从公司离职导致其失去私钥的使用权限,或者是名称变更导致和证书中记载的内容不一致等情况。
纸质证书只要撕毁就可以作废了,但这里的证书是数字信息,即便从仓库中删除也无法作废,因为用户会保存证书的副本,但认证机构又不能入侵用户的电脑将副本删除。
要作废证书,认证机构需要制作一张证书==作废清单(Certificate Revocation List),简称为CRL==。
CRL是认证机构宣布作废的证书一览表,具体来说,是一张已作废的证书序列号的清单,并由认证机构加上数字签名。证书序列号是认证机构在颁发证书时所赋予的编号,在证书中都会记载。
PKI用户需要从认证机构获取最新的CRL,并查询自己要用于验证签名(或者是用于加密)的公钥证书是否已经作废这个步骤是非常重要的。
一个典型的CA系统包括安全服务器、注册机构RA、CA服务器、LDAP目录服务器和数据库服务器等。如下图所示:

回复 支持 反对

使用道具 举报

发表于 2025-3-3 10:27 | 显示全部楼层
>>攻击者可以拿着http://a.com的证书跟我说他就是http://a.com
这个没有用,因为攻击者没有http://a.com的私钥,无法对数据进行解密
>>证书上会记录ip地址这个信息吗
证书和域名绑定的
回复 支持 反对

使用道具 举报

发表于 2025-3-3 10:27 | 显示全部楼层
安全的获取证书的步骤是:
1. 服务器自己生成私钥/私钥,其中私钥需要保密不能公开
2. 生成证书请求(含域名、公钥等信息),发给CA
3. CA生成证书(含域名、公钥、有效期、CA用自己私钥对重要信息的签名)
以上步骤中,只有私钥不能公开的。
证书中的内容主要是域名、公钥、有效期等信息,以及CA对这些信息的签名,这些均是可以公开甚至是越多人知道越好。
https://crt.sh中搜集有各种渠道获取的证书,其中有些是浏览器自动上报的,因此只要有伪造的证书,一旦使用了,这里一般都可以记录。
在通信之前,客户端的系统已经内置了CA的一些信息,即所谓的根证书,这里包含有CA的公钥信息。
通信时,服务器会把自己的证书(目前一般是多级签发,因此是包含证书链的信息)发给客户端,客户端用内置的CA公钥来验证证书的有效性。如果是证书链,则逐级验证。验证的主要内容是域名、有效期、服务器公钥是否正确。验证后,客户端就可以确保有了服务器的公钥信息。将来的通信依靠公钥产生会话密钥,使用会话密钥加解密信息。验证过程中,还会去吊销服务器上查询一个证书是否被吊销了,以便解决没到期的证书但需要让证书失效。
以上过程中,只要服务器私钥不泄漏,CA的签发过程没被控制,就是安全的,既客户端确保了服务器身份。即便CA自己伪造签发了假的证书,一旦使用,在 https://crt.sh中就会留下记录。
需要注意的是,那种web界面申请一下,直接给私钥和证书的过程,是不安全的,因为不能保证私钥不被泄漏。而所谓免费的利用程序自动签发90天证书的CA,反而是安全的。
下面是几个常用的命令可以查看这些文件的信息,假定服务器域名是 http://a.com,私钥文件是a.com.key,证书请求文件是 a.com.csr,证书文件是 a.com.crt
1. 查看公钥/私钥(假定是rsa)
openssl rsa -in a.com.key -text
2. 查看证书请求
openssl req -in a.com.csr -text
3. 查看证书信息
openssl x509 -in a.com.crt -text
回复 支持 反对

使用道具 举报

发表于 2025-3-3 10:28 | 显示全部楼层
首先CA证书就是数字证书认证机构颁发的,它像是一个电子身份证,用来证明服务器的真实身份,一开始服务器得向CA申请这个证书,得提供自己的身份信息和公钥。
这就像是我们办身份证的时候,需要提供个人信息和照片一样,然后CA就会对这个服务器的身份进行一系列的核实,看看这个服务器是不是真的是它所说的那个,这个核实过程可能会包括像查看服务器的域名所有权,检查组织的注册信息啊等,这步骤就像是我们去办理身份证时,公安局要核实我们的个人信息是否真实一样。
核实无误之后,CA就会用自己的私钥,给这个服务器的公钥和身份信息进行数字签名,然后生成数字证书,这个数字证书,就包含了服务器的公钥、身份信息,还有CA的数字签名。
你可以把这个数字证书想象成我们的身份证,上面既有我们的个人信息,又有公安局的盖章,证明这个信息的真实性。
当其他人需要验证这个服务器的身份时,就可以用CA的公钥来检查这个数字证书的真实性和完整性,如果验证通过,那就说明这个服务器是真的,大家可以放心地和它进行通信啦。
所以CA证书就是通过这一系列的过程,来确保服务器的身份的,这样一来,我们在网络上通信的时候,就可以更加安全、更加放心了。
回复 支持 反对

使用道具 举报

发表于 2025-3-3 10:28 | 显示全部楼层
首先,网站拥有者向CA机构申请证书的时候,CA机构生成一个公钥(pem)一个私钥(key),他们的RSA生成加密对之前的明文中就写明了CA机构的信息,而这些信息包含共有部分(CAS)和私有部分(CAP)。客户端会解密(但不是RSA双向加解密的解密)出CAS,然后确认它是不是一家可信的CA机构,然后通过单向加密核对CAP。CAP只有CA机构内部保存,就类似于哈希加密一样。
客户端也生成公私钥。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表