天天看点

使用OpenSSL实现CA证书的搭建过程 个人博客地址:http://www.pojun.tech/ 欢迎访问 什么是CASSL/TLSOpenSSLOpenSSL实现CA证书的搭建参考资料

CA,Catificate Authority,通俗的理解就是一种认证机制。它的作用就是提供证书(也就是服务端证书,由域名,公司信息,序列号,签名信息等等组成)来加强客户端与服务器端访问信息的安全性,同时提供证书的发放等相关工作。国内的大部分互联网公司都在国际CA机构申请了CA证书,并且在用户进行访问的时候,对用户的信息加密,保障了用户的信息安全。理论上来说,任何组织或者个人都可以扮演CA的角色,只不过,难以得到客户端的信任,不能推而广之,最典型应用莫过于12306网站,这个网站就是自己给自己颁发的根证书。 目前能够让浏览器默认支持的CA大厂有很多,Windows 操作系统在安装之初,也默认安装了很多受信任的根证书。可以通过控制面板–Internet选项来进行查看。
SSL/TLS是网络通信过程中非常重要的两个协议。互联网的通信安全就建立在SSL/TLS协议基础之上。他们通过一系列的加密行为保障了通信的安全,是如今互联网通信最主要的应用之一。
SSL/TLS是一个很大的互联网应用,关于他们的介绍互联网上有很多,我们暂时不做详细的介绍。关于SSL/TLS通信的过程大致可以用下面的这张图来进行描述。
OpenSSL是一套开源软件,在Linux中可以很容易的安装。它能够很容易的完成密钥生成以及证书管理。我们接下来就利用OpenSSL搭建CA证书,并实现证书的申请与分发。
实验环境的准备 CA的配置介绍 创建所需要的文件 CA 自签名证书 颁发证书 查看证书状态 证书吊销
首先我们应该准备三个虚拟机,他们分别用来表示根CA证书机构,以及子CA证书机构,和证书申请用户。 那么问题来了,用户向子CA证书机构申请证书,子CA机构向根CA机构申请授权,根CA是如何取得证书的呢?答案是根CA自己给自己颁发的证书。 实验环境的拓扑结构如下图所示。
要手动创建CA证书,就必须首先了解,OpenSSL中关于CA的配置,配置文件位于下面的/etc/pki/tls/openssl.cnf
这里有一点需要注意,我们的实验环境中包含了三个主机,其中两个的角色是作为CA认证机构存在的,所以创建所需要的文件的时候,主机A和主机B都需要创建。 如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。 我们将文件创建在配置文件中指定的路径下面。 生成证书索引数据库文件 <code>touch /etc/pki/CA/index.txt</code> 指定第一个颁发证书的序列号 <code>echo 01 &gt; /etc/pki/CA/serial</code>
首先构造根CA的证书。因为没有任何机构能够给根CA颁发证书,所以只能根CA自己给自己颁发证书。
私钥文件是非常重要的文件,除了自己本身以外,其他任何人都不能取得。所以在生成私钥文件的同时最好修改该文件的权限,并且采用加密的形式进行生成。
颁发证书这里我们将分成两个环节介绍,分别是 子CA证书机构向根CA证书机构申请证书以及普通用户向子CA证书机构申请证书。

A 在需要使用证书的主机上生成证书请求

首先在B主机上生成私钥,这一个过程与前面根CA机构生成私钥的过程是一致的。
利用私钥文件,生成证书申请文件。

B 将证书的申请文件,传递给根CA

将前一步生成的证书的申请文件,传递给根CA机构

C CA颁发证书

此时切换到根CA主机,生成证书

D 将根CA生成的证书颁发给请求者

这一个过程,与子CA向根CA申请证书的过程是类似的。我们将命令的记录如下
这样,正常的证书颁发流程就算是完成了。将我们生成的根证书,子CA证书以及普通用户证书导出到Windows系统中,并安装,然后我们就可以看到,整个证书路径了。如下图所示。
查看证书状态,使用下面这条命令 ,可以查看证书的内容以及颁发者的多种信息。
这里我们将子CA的证书吊销掉。

A 首先在子CA主机上获取到要吊销的证书的serial

前面的例子中,我们的子CA证书的存放路径是<code> /etc/pki/CA/certs/subca.crt</code>

B 在根CA上根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,然后吊销证书

C 指定第一个吊销证书的编号

指定吊销证书的编号,只有在更新证书吊销列表之前,才需要操作

D 更新证书吊销列表

前面指定了证书吊销列表编号之后,就可以来更新证书吊销列表了。
查看证书吊销列表的文件
在实际的使用过程中,有很多这样的实例。例如我们经常使用的淘宝,在使用浏览器访问淘宝的时候,就可以查看淘宝的证书吊销列表。如下图所示。

至此,关于自己搭建CA的过程基本上就完成了。熟悉了上面的操作之后,就可以自己动手简单的搭建一个证书了,然后也可以体验一下整个流程

<a href="http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html" target="_blank">http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html</a>

<a href="http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html" target="_blank">http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html</a>

<a href="http://kb.cnblogs.com/page/197396/" target="_blank">http://kb.cnblogs.com/page/197396/</a>

     本文转自Eumenides_s 51CTO博客,原文链接:http://blog.51cto.com/xiaoshuaigege/1965113,如需转载请自行联系原作者

继续阅读