大家好,我是明哥。
前段时间整理了关于数字证书和数字签名的一些内容,今天整理一下发出来。
我们都知道 HTTP 协议都是明文传输内容,为了保证数据传输的安全,HTTPS 协议就应运而生了,但它其实并不是一个全新的协议,而是HTTP 协议基本之上 再加上SSL/TLS 协议。
因此当你访问一个支持 https 的网站时,是需要先进行 SSL/TLS 握手建立连接的。
SSL/TLS 握手的目的是为了 安全 地协商出一份对称加密的密钥,有了这个密钥之后,后续的数据全部使用这个密钥进行加密。
这个过程其实挺有趣的,涉及到的知识点,专业名词也很多,比如对称加密,非对称加密,信息摘要,数字签名,数字证书,公钥和私钥。本篇文章,会详细地介绍这些极易混淆的专业名词。
在讲解之前,我先给你提出几个摸底问题,如果你已经还不能够熟练回答,那么本篇文章会给你答案:
1、 对称加密和非对称加密,各有什么优缺点?
2、对称加密和非对称加密,是排他关系吗?是否可以搭配使用?
3、摘要和加密有什么区别?有了摘要算法为什么还要有加密算法?
4、如何在通信时同时做到保密性、高效性?
5、如何申请数字证书?证书分为哪几种?SSL 证书如何部署?
6、完整说下证书申请、证书签发、证书下发客户端、客户端验证证书、数据加密传输的整个流程?
对称加密
是通信双方共同拥有一把密钥。
这把密钥可以把明文加密(encryption)成密文,也可以把密文解密(decryption)成明文。
常见的对称加密算法有AES、DES、RC4,其中最常用的是AES。
对称加密的优点是:速度快。
同时也有一个缺点,就是不那么安全,一旦你的密钥被别人窃取了,所有的数据就会在网络的世界里裸奔。
与 对称加密相对的是 非对称加密
。
通信双方持有不同的密钥。
服务端的密钥,称之为 私钥
(private key),客户端的密钥,称之为 公钥
(public key)。
他们二者的区别是:
1、私钥应仅在服务端保存,绝不可泄露。而公钥可以存在于任何的客户端,即使黑客拿到了也没有关系。
2、公钥加密的密文只有相对应的私钥才能解密
3、私钥加密的内容,所有与之相对应的公钥都能解密。
4、私钥通常用来生成签名,公钥用来验证签名。
5、公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。这意味着,公钥只要不对外公开,那就可以做为私钥,私钥公开后也可以做为公钥。
典型的非对称加密算法有 RSA 。
非对称加密的优点,就是安全系数特别高。缺点就是速度会慢一些。
当客户端收到的公钥是准确的时候,通信就是安全的。
因为用正确公钥加密过的密文,只有服务端的私钥能解。
那么如何保证,客户端收到正确的公钥呢?
答案是:通过非对称加密来协商对称加密的密钥,服务端一旦把正确的公钥安全地送达到客户端后,后续的通信,为了保证高效通信,再采用对称加密来加密数据。
具体的过程,后面会更加详细的阐述这一过程。
一段信息,经过摘要算法得到一串哈希值,就是摘要(dijest)。
常见的摘要算法有MD5、SHA1、SHA256、SHA512等。
关于摘要,有几点需要你明白的:
1、摘要算法,是把任意长度的信息,映射成一个定长的字符串。
2、摘要算法,两个不同的信息,是有可能算出同一个摘要值的。
3、摘要算法与加密算法不同,不存在解密的过程。
4、摘要算法不用于数据的保密,而是用于数据的完整性校验。
摘要经过私钥的加密后,便有了一个新的名字 -- 数字签名
。
签名
是在发送方,这是一个加密的过程。
验签
是在接收方,这是一个解密的过程。
那搞懂数字签名的意义是什么?只要回答下面两个问题即可。
第一个问题,有了信息摘要,为何还要有数字签名?
答:信息摘要,虽然也不可逆,但却容易却被伪造。所以信息摘要只用于校验完整性,而要保证信息摘要的正确性,就要依靠数字签名啦。
数字签名的签名和验签是非对称加密,其他人除非拿到私钥,不然没法伪造。
第二个问题,为什么不对内容直接加密,而是对摘要进行加密。
答:由上面我们知道了非对称加密的速度非常慢,如果传输的数据量非常大,那这个加密再解密的时间要远比网络传输的时间来得长,这样反而会得不偿失。
如果我们对传输的内容只有完整性要求,而安全性没有要求(意思是传输的内容被人知道了也没关系)。那就可以对摘要进行加密,到客户端这里解密后得到摘要明文,再用这个摘要明文与传输的数据二次计算的摘要进行比较,若一致,则说明传输的内容是完整的,没有被篡改。
在数字签名那里,不知道你有没有发现一个问题?
数字签名是非对称加密,服务端有一个私钥,客户端一个公钥,只有这两个对上了验签。
那假如说你(客户端)拿到的公钥并不是服务端给的呢,而是黑客塞给你的呢?而你却把这个假公钥当成真的,那么当你使用这个假公钥加密一些敏感信息时,黑客就可以截取你的这段信息,由于这信息是用黑客自己的公钥加密的,这样一来,黑客拿自己的私钥就能解密得到你的敏感信息。
这就是问题所在。
要解决这个问题,其实只要保证『公钥』是可信的。只有服务端发给你的公钥你才能拿,而坏人给你的公钥,你要懂得识别并丢弃它。
数字证书就应运而生了。
要理解数字证书,同样只要搞懂两个问题即可。
.crt
文件为了让你理解这一过程,我画了下面这张图:
1、在自己的服务器上生成一对公钥和私钥。然后将域名、申请者、公钥(注意不是私钥,私钥是无论如何也不能泄露的)等其他信息整合在一起,生成.csr
文件。
2、将这个 .csr
文件发给 CA 机构,CA 机构收到申请后,会通过各种手段验证申请者的组织信息和个人信息,如无异常(组织存在,企业合法,确实是域名的拥有者),CA 就会使用散列算法对.csr
里的明文信息先做一个HASH,得到一个信息摘要,再用 CA 自己的私钥对这个信息摘要进行加密,生成一串密文,密文即是所说的 签名。签名 + .csr
明文信息,即是 证书。CA 把这个证书返回给申请人。
在HTTPS的传输过程中,有一个非常关键的角色--数字证书
,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。
x509的证书编码格式有两种:
openssl x509 -noout -text -in server.pem
。其实PEM就是把DER的内容进行了一次base64编码openssl x509 -noout -text -inform der -in server.der
openssl rsa -inform DER -noout -text -in xxx.key
。查看PEM编码的(公钥或者密钥)的文件的命令为: openssl rsa -inform PEM -noout -text -in xxx.key
;安全证书主要分为DV、OV和EV三个种类,对应的安全等级为一般、较好和最高三个等级。三者的审核过程、审核标准和对应的域名数量也不同,所以价格在一两百元到几万元不等。
DV SSL证书是只验证网站域名所有权的简易型(Class 1级)SSL证书,可10分钟快速颁发,能起到加密传输的作用,但无法向用户证明网站的真实身份。
目前市面上的免费证书都是这个类型的,只是提供了对数据的加密,但是对提供证书的个人和机构的身份不做验证。
OV SSL,提供加密功能,对申请者做严格的身份审核验证,提供可信×××明。
和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高。
所以这部分的证书申请是收费的~
超安=EV=最安全、最严格 超安EV SSL证书遵循全球统一的严格身份验证标准,是目前业界安全级别最高的顶级 (Class 4级)SSL证书。
金融证券、银行、第三方支付、网上商城等,重点强调网站安全、企业可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输。
这部分的验证要求最高,申请费用也是最贵的。
选择签发机构时,最好选择行业认可的全球范围内都可以使用的ca机构签发的证书。目前我们国内的证书能够符合标准的还不是特别多,主要原因是有一些证书不能够被国外的浏览器所认可,在使用的时候需要进行一定的额外操作。
根据保护域名的数量,SSL证书又分为:
单域名版:只保护一个域名,例如 www.abc.com 或者 login.abc.com 之类的单个域名
多域名版:一张证书可以保护多个域名,例如同时保护 www.abc.com , www.bcd.com, pay.efg.com 等
通配符版:一张证书保护同一个主域名下同一级的所有子域名,不限个数,形如 *.abc.com 。注意,通配符版只有 DVSSL 和 OVSSL 具有, EVSSL 不具有通配符版本。
当你在下载并安装浏览器时,浏览器内部其实已经内嵌了全世界公认的根证书颁发机构的证书。
若一个网站的数字证书的证书颁发机构在浏览器中没有,则需要引导用户自行导入。
如果你想在 Chrome 中查看有哪些受信任的证书颁发机构,可以点击 设置
-> 隐私设置与安全性
-> 安全
-> 管理证书
在上图的位置里,随便双击点开一个证书,就可以查看证书里的内容。
内容非常多,最主要的有
证书是有生命周期的,如果证书的私钥泄漏了那这个证书就得吊销,一般有两种吊销方式:CRL和OCSP。
CRL( Certificate Revocation List)是CA机构维护的一个已经被吊销的证书序列号列表,浏览器需要定时更新这个列表,浏览器在验证证书合法性的时候也会在证书吊销列表中查询是否已经被吊销,如果被吊销了那这个证书也是不可信的。可以看出,这个列表随着被吊销证书的增加而增加,列表会越来越大,浏览器还需要定时更新,实时性也比较差。
所以,后来就有了 OCSP (Online Certificate Status Protocol)在线证书状态协议,这个协议就是解决了 CRL 列表越来越大和实时性差的问题而生的。有了这个协议,浏览器就可以不用定期更新CRL了,在验证证书的时候直接去CA服务器实时校验一下证书有没有被吊销就可以,是解决了CRL的问题,但是每次都要去CA服务器上校验也会很慢,在网络环境较差的时候或者跨国访问的时候,体验就非常差了,OCSP虽然解决了CRL的问题但是性能却很差。
如果你想了解更多关于证书的内容,可以前往华为云的公开文档进行学习:https://support.huaweicloud.com/scm_faq/scm_01_0020.html
CSR是Certificate Signing Request的英文缩写,即证书签名请求文件。
当申请者申请数字证书时,CSP(加密服务提供者)生成私钥,同时也生成了CSR文件。申请者将CSR文件提交至Certificate Authority (CA)机构后,CA机构使用其根证书私钥签名,从而就生成了数字证书。
申请者通过CSR文件,向CA机构申请数字证书。获取证书后,就能证明申请者的网站是可信的,数据传输是加密的。
接下来来了解一下,CSR 文件是如何生成的?
假设申请的域名为 python.iswbm.com,公司名称为派森时光科技,部门是IT部,公司在中国广东省深圳市。可通过运行下方命令行生成CSR文件:
$ openssl req -new –SHA256 -newkey rsa:2048 -nodes -keyout python.iswbm.com.key -out python.iswbm.com.csr -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=派森时光科技/OU=IT/CN=python.iswbm.com"
此命令行表示:
req
参数:表示证书请求request,用于生成CSR文件。SHA256
参数:表示CSR签名时用的摘要算法。newkey
参数:表示指定证书的算法。参数 2048:表示密钥对的长度。nodes
参数:表示不对私钥加密。keyout
参数:表示生成的私钥文件。名为iswbm.key
的私钥文件,需自行保管,用于获取证书后的部署过程。out
参数:表示生成的 CSR 文件。名为iswbm.com.csr
的CSR文件,用于提交至CA机构验证信息,从而获取证书。subj
参数:表示CSR信息,具体有哪些参数,可以继续往下看。subj参数说明:
C
:Country,表示国家,申请者或申请企业所在国家的英文或两位大写国家代码。如:CNST
:State/Province,表示省份,申请者或申请企业所在地的省/市/自治区英文或拼音全称。如:GuangdongL
:Locality,表示城市,申请者或申请企业所在城市的英文或拼音全称。如:ShenzhenO
:Organization,表示申请者的姓名或申请企业的名称。OU
:Organizational Unit,表示申请人所在部门的英文或拼音全称。如:ITCN
:Common Name,表示你要为哪个域名申请证书,可是单域名(比如 python.iswbm.com),也可以是泛域名(*.iswbm.com),也可以是为多个域名申请一个证书(具体我没操作过)。上一条命令执行完后,会在你的本地目录下生成两文件
$ cat python.iswbm.com.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIC0TCCAbkCAQAwgYsxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAlHdWFuZ2Rvbmcx
ETAPBgNVBAcMCFNoZW56aGVuMS0wKwYDVQQKDCTDpsK0wr7DpsKjwq7DpsKXwrbD
...
7lgB4QC1aIFz8gi9TGMJU2LqTDJCj+tgM68LDBdMLeQ8XZ33C95Nl0qt7yG+zjlZ
01jBh+T882r8x9gKdwb7nZSWFQY4/YTq+sY++YW/QuCNRcJ2vbM18U/HlIRsZ3su
x6Neh08=
-----END CERTIFICATE REQUEST-----
$ cat python.iswbm.com.key
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC4OrcM9hTs9Hao
SzjsVJFX2Mmd+mToMG3u++o2Fd5yrPYq4COkT33lnL9kJNrDWqGp5TRkWqNwLaPl
...
a/lKBWLcvxE+IQ+mxNbN058kEJ3l8WAcAFCebLm5czUqmIVa3JR+cBDLvGFZVn6z
72AP5D/Evds4BOO+VzAiVLU6Ai78qhACuVExZNQCxdvJy4LxpeckUpCem9hAPiIY
LQfiTStBBU6t/+mnDyij+XreGQ==
-----END PRIVATE KEY-----
使用 OpenSSL 工具生成 CSR 文件的方法固然简单,但使用时,需要你的了解代码中参数的意思。
如果你不想花心思去记这些,推荐你使用 CSR在线生成工具(https://myssl.com/csr_create.html)
你只需简单地输入如下信息,再点击 OpenSSL生成
,你就可以获得一条 OpenSSL 命令,这下你再也不用自己拼凑参数啦,真的太方便了。为什么不点击 生成
让其直接生成 私钥文件 和 CSR文件 呢?当然是为了安全起见啦。
在信息安全性问题中,我们常常要做到三点才能保证信息的安全:
将这三者结合起来,就是 TLS/SSL 做的事情
1、客户端(浏览器)向服务端发出请求,服务端返回证书给客户端。
2、客户端拿到证书后,把证书里的签名与及明文信息分别取出来,然后会用自身携带的CA机构的公钥去解密签名,然后信息摘要1,然后再对明文信息进行HASH,得到一个信息摘要2,对比信息摘要1 和信息摘要2,如果一样,说明证书是合法的,也就是证书里的公钥是正确的。
以上采用的是非对称加密(CA的公钥和私钥),保证了客户端接收到服务端正确的公钥,有了服务端的公钥后,后面的信息加密都可以使用这个公钥,而用这个公钥加密过后的密文,只有服务端的私钥能解,就算黑客拿到了也没法解开。
好了,以上就是本次分享的全部内容了,希望对你会有帮助。
本文由哈喽比特于4年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/9pS3-M_PXhRwcXpD1RTT6w
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。