数字证书身份认证原理与签发步骤详解

您所在的位置:网站首页 数字证书授权码是什么样的 数字证书身份认证原理与签发步骤详解

数字证书身份认证原理与签发步骤详解

2024-07-16 10:45| 来源: 网络整理| 查看: 265

数字证书身份认证原理与签发步骤详解 网络

人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。

—— 唐·韩愈·《师说》

上一小节,我们学习了非对称加密,掌握了密钥协商,数据签名等典型应用场景。现在,我们继续讨论身份认证话题,学习 数字证书( certificate )的工作原理。

概念回顾 信息摘要( digest ),数据经过哈希算法得到的一串哈希值,代表数据的特征,也称为数据指纹; 摘要算法 ,可以把任意长度的数据,映射成一个定长的字符串(哈希值); 由于哈希冲突的存在,两份不同的数据,有可能算出相同的摘要值; 摘要算法无法用于数据加密,通常用来校验数据完整性,即 数据防伪 ; 常见的摘要算法有:MD5 、SHA1 、SHA256 、SHA512 。 数字签名( signature ),摘要由私钥加密后,得到的摘要密文就是数字签名; 签名,由数据发送方生成,这是一个 加密 过程(使用私钥); 验签,由数据接收方校验,这是一个 解密 过程(使用公钥); 数字签名只能由私钥生成,因此第三方无法伪造; 数字证书

在介绍密钥协商时,我们提到服务器先将公钥发给客户端,用公钥保护对称加密密钥,确保通信内容不会被第三方获悉。但如果客户端连接的服务器是假的呢?如果用户对假网站信以为真,输入了账号密码,那么这些敏感信息都会被假网站窃取!

这种假网站被叫做 钓鱼网站( phishing site ),它们高仿原网站,以假乱真。用户仅凭外观通常难以区分,因此信以为真。在钓鱼网站上输入的账号密码,最终都会被架设网站的黑客收集到。

那么,客户端应该如何判断服务器真伪呢?如何识别钓鱼站点呢?

上节我们也讨论了数字签名,通过它可以实现数据防伪。那么,我们是不是可以利用这项技术来甄别仿冒站点呢?显然,若有权威机构(如政府)担起站点信息签名的责任,即可轻松识别仿冒站点!

权威机构生成一对密钥,并提供站点认证审核和数字签名颁发服务; 站点管理员将站点信息,包括域名、运营单位、公钥等信息发给权威机构审核; 权威机构对提交上来的站点信息进行审核,审核通过则用私钥签名后返回给站点管理员; 客户端(浏览器)连接站点服务器,服务器将站点信息以及对应的数字签名发给客户端; 客户端用权威机构提供的公钥来校验数字签名,即可判断站点信息的真伪性; 签名验证通过,客户端从站点信息中取出公钥,与服务端协商密钥,发起加密通信; 由于签名用的私钥只有权威机构掌握,黑客无法伪造数字签名,也就无法架设仿冒站点; 权威机构必须由可信的单位运营;

你可能会觉得,黑客直接盗用站点信息和签名不就可以伪造原站点了嘛?此言差矣!因为公钥属于站点信息的一部分,也会参与签名!客户端和服务端协商密钥时,会使用这个公钥加密密钥。由于黑客不掌握站点私钥,因此加密连接无法建立!黑客把公钥替换成自己的吧,签名就不对,肯定会被验出来!

由域名、运营单位以及公钥等组成的站点信息,加上权威机构生成的数字签名,就构成了本节的主角—— 数字证书( certificate )。HTTPS 协议正是利用数字证书技术,来实现站点身份验证的。

您可能会说,如果权威机构的公钥被人调包,那数字证书也就不起保护作用了。确实如此!不过,权威机构的公钥通常以根证书的形式预装在操作系统里面,黑客很难对它做手脚。这也从层面说明使用正版系统的重要性,因为盗版系统很有可能会被人做手脚。

证书签发实验 CA权威机构

首先,权威机构需要生成一对密钥,对应图中红色那对( pem 文件 ):

1 openssl genrsa -out cakey.pem 2048

然后,生成根证书签发申请文件( csr 文件):

1 openssl req -new -key cakey.pem -out ca.csr -subj '/C=CN/ST=Guangdong/L=Guangzhou/O=coding-fans/OU=CA/CN=ca.fasionchan.com'

证书申请文件包含权威机构的信息,包括机构信息( Subject )和公钥( Public Key 部分 ):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 openssl req -in ca.csr -text -noout Certificate Request: Data: Version: 0 (0x0) Subject: C=CN, ST=Guangdong, L=Guangzhou, O=coding-fans, OU=CA, CN=ca.fasionchan.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:9a:b9:3e:a6:85:a9:90:16:56:d1:df:ee:50:cd: b9:6f:92:0e:55:ac:50:db:42:b2:06:80:7e:5a:b7: b3:ff:e2:45:64:50:83:ee:84:87:c3:da:b4:e9:8d: a6:d0:34:0a:8a:15:b8:f2:78:4e:cc:e9:98:8e:1b: 0f:09:51:00:47:b9:c0:77:a1:98:1e:af:7e:7f:28: 29:a3:10:aa:70:e7:73:24:26:25:bb:9e:a6:bd:ee: fc:63:c4:3d:a3:f2:92:69:c3:aa:12:15:90:f2:a5: 0f:a8:62:9d:03:e3:1a:49:65:69:0f:cd:17:20:03: 5e:54:f8:e3:69:f7:d9:86:e4:0b:10:d5:4e:67:ef: bd:fb:4e:13:88:92:4b:fe:3b:09:68:36:a3:96:d3: 9e:f2:92:5b:03:83:52:3d:c7:30:41:cb:29:42:25: cf:b9:ca:1b:8d:c9:df:a5:1b:cc:87:27:19:3f:0a: d1:da:71:f3:6f:26:a1:44:b2:12:57:18:94:5f:53: 5e:a9:b0:b2:6b:31:5b:ce:44:52:07:f7:b4:c7:a2: d3:5b:88:34:bf:dd:61:78:b6:e7:a5:df:39:60:ad: 37:48:85:c3:28:69:97:7f:5d:ed:09:93:e3:6f:91: 8f:d7:d1:21:18:4b:d8:11:1b:5e:7e:e1:4d:70:ec: 26:ff Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha256WithRSAEncryption 31:f7:8d:41:87:13:c1:66:a9:ea:d5:ac:57:d7:0d:33:2b:10: 21:12:33:58:3b:40:8b:9d:6a:b2:dd:1f:50:e6:c7:92:d3:10: 43:72:40:14:1a:63:33:4d:55:1f:1c:ce:ce:27:aa:d3:22:3a: a3:bc:bb:53:97:b9:7f:c4:66:53:35:59:5f:88:6c:35:ad:49: 6b:b8:14:60:f8:42:8b:2a:9a:e9:59:00:b3:00:b7:c8:53:44: 53:81:f8:f3:51:12:3b:4c:6a:4f:ce:be:45:7f:b7:14:d5:53: 35:d4:71:88:05:f3:1b:0d:3a:cf:7a:66:60:19:ac:90:81:96: 1f:e0:7f:f7:d2:be:08:77:a9:7e:70:8d:87:40:98:aa:5e:4b: f1:8b:d7:58:7d:64:02:56:4c:55:92:99:1d:b1:af:8b:7a:09: c1:0e:0d:d7:0e:a1:f1:1a:04:66:c7:c7:28:f5:b7:71:51:36: ab:fb:4e:a3:9c:d8:ec:69:f0:c4:54:5c:69:a6:59:22:a0:d6: 4f:04:3a:41:35:95:ed:c5:4a:63:11:13:43:0e:54:a9:51:a5: 31:54:34:74:9a:6d:8f:25:44:c1:42:ae:3c:bf:a6:f9:4d:c9: fa:43:fd:d6:0c:fc:86:e4:f9:18:96:a7:50:64:b8:cc:37:4a: 37:91:96:4e

最后,自签根证书( cer 文件 ):

1 openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out ca.cer

这一步生成的 cer 文件就是根证书文件,它的主要作用是承载权威机构公钥,以便预装在操作系统或者其他终端。它同样会包含权威机构的信息,公钥,以及对应的签名。

商业站点(服务端)

首先,站点管理员生成一对密钥,对应图中黄色那对:

1 openssl genrsa -out sitekey.pem 2048

然后,生成证书签发申请文件( csr 文件):

openssl req -new -key sitekey.pem -out site.csr -subj '/C=CN/ST=Guangdong/L=Guangzhou/O=fasionchan/OU=website/CN=fasionchan.com'

同样,证书申请文件包含站点信息和公钥,不再赘述。站点管理员将证书申请文件发给权威机构审核,对应图示中的步骤②。

权威机构对申请进行审核,审核通过则用自己的私钥对它进行签名,生成证书( cer 文件 ):

1 openssl x509 -req -days 365 -sha1 -extensions v3_req -CA ca.cer -CAkey cakey.pem -CAserial ca.srl -CAcreateserial -in site.csr -out site.cer

证书中保存着包括公钥在内的站点信息,以及权威机构对这些信息的签名(图示步骤③)。管理员接到权威机构颁发的证书,就可以部署网站了。

浏览器(客户端)

客户端浏览器访问站点,服务端会将其证书发给客户端。客户端先对证书签名进行验证,步骤如下:

重新对证书中的站点信息计算 摘要值 ; 用公钥对证书中的签名进行解密,得到证书的原始摘要值; 公钥通常由根证书提供,根证书通常预装在系统里; 对比两个摘要值看是否一致;

调用 openssl 工具,一行命令即可完成签名验证:

1 openssl verify -CAfile ca.cer site.cer 总结

数字证书是支撑互联网身份认证的重要技术手段,可以简单理解成经过 CA 权威结构签名认证过的站点信息。由于经过 CA 签名,第三方无法通过伪造手段冒充身份。

证书由站点信息和 CA 签名组成,站点信息包含站点公钥,公钥用于协商对称加密密钥; 证书由 CA 权威机构审核签发,签名用的是 CA 的私钥; CA 公钥通常以根证书形式预装在系统内,客户端通过它来验证证书签名; 有了数字签名,黑客无法对证书进行篡改,也无法伪造证书,因此无法部署仿冒站点; 若只窃取原站点证书,不做篡改,客户端使用真实站点的公钥,而黑客无法掌握站点私钥,因此加密连接无法建立; 如果篡改原站点证书,换上自己的公钥,但因为没有 CA 私钥无法生成合法签名,也会被识别出来;

【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学网络】系列文章首发于公众号【小菜学编程】,敬请关注:

fasionchan 2023-02-04


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3