什么是自签名数字证书?
正文
最近华为事件的不断升级,让国人认识到科技的威力,谁在全球科技的竞争中处于弱势,将会遭受到强势一方的肆意蹂躏,这不是我们想要的结果。我们想要的结果是,我们有能力将对手按倒在地不断摩擦!强大是为了更好地保护自己,人民生活幸福,是为了避免被按倒在地摩擦的悲惨命运!
与其喊一万遍这样的口号,还不如踏踏实实学点技术,当有越来越多的人能够静下心来研究技术了,科技整体实力上升了,才能科技竞争中立于不败之地!
什么是证书?
每一个成年人都有一张身份证,这个身份证就是一张证书,以用来证明每个公民的身份。
身份证里有一块迷你芯片,存储着身份证的信息,为了防止被篡改,通常存储的内容有写保护措施。换句话说,身份证里的信息只能读取不能写入。
为了防止伪造,可以使用公安系统的私钥,对身份证信息进行签名。
公民的身份可以让公安局来证明,那公安局的身份谁来证明?
公安局使用自签名证书,那什么是自签名证书?
顾名思义,就是自己证明自己的证书,用自己的私钥给自己的证书签名。
逻辑不对啊,自签名证书,怎么证明他就是公安局的呢?
公安局的身份无法证明,公安局的身份基于信任!
你不信不要紧,只要银行信任他就行了。
银行如何信任公安局的自签名证书?
只要预先安装在银行系统的电脑里,准确地说,把公安局的自签名证书复制到电脑的证书仓库里,就是信任公安局的自签名证书了。
自签名证书里都有啥?
如图所示,这个就是自签名证书,证书的颁发者与证书的使用者相同,除了自签名部分是私钥加密的,其它部分全部为明文,包括公钥也是明文。
当柜员拿到小明的身份证,通过读卡器读出芯片中的公安局的签名(公安局私钥加密),然后根据到证书仓库里搜索,找到公安局的自签名证书,如上图所示,用明文的公钥尝试解密签名,解得开,证明这张身份证确实是公安局颁发的,可以继续读取身份证的其它信息。解不开,说明是伪造的。
读者只要将上文里的公安局用CA替换掉,就可以用这个故事来尝试理解目前互联网的数字证书的认证原理。
什么是CA?
CA就是类似公安局的证书颁发机构,他们的身份已经被操作系统信任了,并安装在证书的仓库里。
什么是根证书?
CA通常使用自签名证书,被操作系统信任了,他们就是根证书,因为他们是证书链的最顶端,其它的二级证书、三级证书,都是他们的孩子、孙子,所以这些自签名证书称自己为根(Root)证书,是非常形象的。
三级证书由二级证书机构颁发,二级证书由根证书颁发,根证书由操作系统信任,这个就是数字证书的信任链条。
写完背景知识,再来回答这个问题就非常简单了。
浏览器没有信任证书?
这个说法不是很恰当,准确的说,是网站的自签名证书没有复制到浏览器所在电脑的数字证书仓库里。当服务器将自己的自签名证书提交给浏览器审查时,浏览器无法在仓库里搜索到,所以浏览器无法校验对方的证书是否真实有效。
当无法校验对方证书(Certificate Verify)时,浏览器发送Alert报文报错(Fatal Error),致命性的错误,然后连接断开。
网站如何使用自签名证书?
一些银行早期曾使用过自签名证书,需要用户访问他们的http网站,先行下载并安装自签名证书,相当于信任了这些自签名的证书,然后就可以通过https访问网银了。
随意安装自签名的证书的安全风险大,一个机构如果将自己的根证书(自签名证书)潜伏在用户证书仓库里,随后颁发任何虚假证书,浏览器都会相信并与之建立安全加密通信,而用户压根觉察不到任何异常,这是很危险的!