今天跟大家聊聊我最近折腾的——根证书,这玩意儿听起来高大上,但没那么神秘。说白,就是个“信任”的问题。
我对这玩意儿也是一头雾水,啥是CA,啥是信任链,看得我脑壳疼。后来我就想,光看理论不行,得动手试试。
我找点资料,大致解根证书是个简单来说,就是有个机构(CA)跳出来说:“我保证我发的证书都是靠谱的!”然后它给自己发个证书,这就是根证书。你信任这个CA,就得把它的根证书装到你的电脑或者浏览器里。
然后我就开始找我电脑里的根证书,想看看这玩意儿长啥样。在Windows里,直接在搜索栏搜“管理计算机证书”,打开之后就能看到“受信任的根证书颁发机构”,里面一堆证书,看得我眼花缭乱。
我就随便点开一个,看看里面的信息,大概就是这个证书是谁颁发的,有效期是多久,还有一些其他的参数。有些参数我也看不懂,但是没关系,知道它是个“身份证明”就行。
为更深入的理解,我还试着在浏览器里看看。Chrome浏览器里,在设置里搜索“管理证书”,也能找到类似的界面。
看完这些,我就在想,这些根证书都是哪来的?后来查查才知道,大部分操作系统和浏览器都会预装一些常用的根证书,这样我们才能放心的访问那些使用SSL加密的网站。
后来我还突发奇想,能不能自己创建一个根证书?网上搜一堆教程,发现要用到OpenSSL这个工具。这玩意儿我之前没用过,又花不少时间去学习怎么安装和使用。
按照教程,我一步一步的生成私钥、证书签名请求(CSR),然后用自己的私钥给自己签发一个根证书。过程还挺复杂的,各种命令参数,一不小心就出错。
证书搞出来之后,我就想试试看能不能用它来签发其他的证书。我又生成一个新的私钥和CSR,然后用我刚刚创建的根证书给它签个名。
我把这个签过名的证书安装到我的电脑上,然后尝试访问一个使用这个证书的网站。结果?浏览器直接报错,说这个证书不受信任。
这也在我的意料之中,因为我自制的根证书并没有被操作系统信任。想要让浏览器信任我的证书,还需要把我的根证书添加到操作系统的信任列表中。
把自制的根证书加入信任列表后,再次访问那个网站,浏览器就不再报错。看到这里,我总算明白这个“信任”的流程。
折腾完这一圈,我对根证书的理解总算是更深一步。它不只是一个简单的文件,而是整个安全体系的基石。虽然过程有点复杂,但是自己动手实践一下,真的能学到不少东西。