在Linux中架设CA证书中心

2017-03-09 04:17
网络安全和信息化 2017年1期
关键词:数字证书申请单私钥

引言:为了保证通讯的安全,可以使用数字证书来解决身份识别问题。一般通过证书管理中心(CA),来申请和获得数字证书。在Windows中创建CA服务器很常见,但是,在Linux中,该如何简单有效的建立CA证书中心呢?本文介绍在Linux系统中架设CA证书中心。

为了保证通讯的安全,可以使用数字证书来解决身份识别问题。一般通过证书管理中心(CA),来申请和获得数字证书。但是,证书的申请和处理是需要收费的。并且SSL加密连接机制在实际工作中应用的很广泛,但凡涉及到SSL安全技术,在服务器端都必须提供相应的数字证书,否则SSL机制就无法工作。在Windows中创建CA服务器很常见,但是,在Linux中,该如何简单有效的建立CA证书中心呢?

搭建CA证书中心

其实,在Linux中借助于OpenSSL软件,可以很轻松的搭建CA证书中心。在RHEL 5中自带了该软件,例如将其安装盘中的“openssl-0.9.8b-8.3-el5.rpm”包复制进来,执行“rpm–ivh openssl-0.9.8b-8.3-el5.rpm”命令即可安装。在命令提示符下执行“cd/etc/pki/tls/misc”命令,切换到指定目录,执行“./CA-newca”命令,表示创建企业CA。按提示执行操作。

例如, 在“CAcertfication filename (or enter to create)”栏中输入证书以及私钥文件名称,如果点击回车表示使用默认值。 在“Enter PEM pass phrase”栏中输入密码,用来保护企业CA私钥。在“Country Name”栏中输入国家代码。例如“CN”,等。在“A challenge password”和“AN optional company name”栏直接点击回车跳过,在“Enter pass phrase for”栏中输入保护CA私钥的密码。在“Certfication Details”栏中依次显示CA证书内容,完成CA证书中心的创建。在“/erc/pki/CA”目录下创建名为“cacert.pem”文件就是证书文件,在“/etc/pki/CA/private” 目录下创建的“cakey.pem”即私钥文件。这里采用的是默认值。

证书的申请和审核签发

例如,当某台主机项部署一个具有HTTPS安全连接能力的网站,来证明其合法身份,就需要为网站申请一个证书。这就需要为其生成证书申请单,然后交给CA服务器来处理。在命令提示符下执行“cd /etc/pki/tls/misc”命令,切换到指定目录。执行“./CA –newreq”命令,表示创建证书申请单。之后该命令以随机方式生成私钥,之后将其保存成名为“newkey.pem”的私钥文件。在“Enter PEM pass phrase”栏中输入密码,用来对私钥进行加密。在“Contry Name”栏中输入国家名,以下依次输入网站的信息,这些信息会保存在所申请的数字证书中。其具体操作与上述基本相同。当生成证书申请单后,在当前路径下会得到“newreq.pem”和“newkey.pem”文件,前者是申请单文件,后者是私钥文件。

之后将证书申请单提交给CA服务器处理,必须将存放在“/etc/pki/tls/misc”目录中,其名称必须为“newreq.pem”。执行“cd /etc/pki/tls/misc”命令,切换到指定目录,执行“./CA -sign”命令,使用“-sign”参数表示执行证书签发操作。根据命令的提示,在“Enter pass phrase for”栏中输入CA私钥的密码。在“Certification Details”栏中显示证书申请单的内容,便于管理员核对。当核对无误后,在“Sign the certificate?”栏中输入“y”,表示执行凭证签发动作。在“1 out of 1certificate request certified,commit?”栏中输入“y”,再次执行确认操作,执行凭证签发作业。之后执行具体的签发操作。当执行完毕后,打开“/etc/pki/tls/misc”目录,可以看到名为“newcet.pem”的证书文件。之后将其发送给申请者即可。在CA服务器上将上述证书申请单文件以及创建的证书删除,因为CA不需要保存这些文件。需说明的是,实际使用时,对于RHEL 5.X或者CentOS 5.X来说,如果使用的是安装光盘中提供的OpenSSL软件包的话,生成的数字证书只能在Linux平台上使用,在Windows中使用会存在问题。对于RHEL 4.X/6.X或者CentOS 4.X/6.X系统来说不存在这种问题。

将证书导入到Windows中

如需将证书导入到Windows中,需要进行转换操作。因为Windows并不支持上述格式。假设生成的证书为“kehu.pem”,私钥为“kehu.key”。执行“openssl pkcs12 export–in kehu.pem–out kehuduan.p12–inkey kehu.key”命令,按照提示输入私钥密码,同时需要输入保护“kehuduan.p12”证书的密码,该密码在Windows导入证书时需要输入。在Windows 7中点击“Windows+R”组合键,执行“mmc”命令,在控制台窗口中点击“Ctrl+M”组合键,在弹出窗口中的“可用的管理单元”列表中选择“证书”项,点击“添加”按钮,在证书管理界面中选择“计算机账户”项,在下一步窗口中选择“本地计算机”项,点击完成按钮返回控制台界面。

在控制台界面左侧依次选择“控制台根节点”、“证书(本地计算机)”、“个人”项,在其右键菜单上点击“所有任务”、“导入”项,在操作向导界面中点击下一步按钮,在“要导入的文件”窗口中点击浏览按钮,选择上述“kehuduan.p12”文件。在下一步窗口中输入保护密码,在点击下一步按钮,选择证书存储位置,这里选择“个人”项。点击完成按钮,完成证书导入。接下来需要导入CA证书,在控制台左侧依次选择“控制台根节点”、“证书”(本地计算机)、“受信任的跟证书颁发机构”、“证书”项,在其右键菜单上点击“所有任务”、“导入”项,在操作向导界面中点击下一步按钮,点击浏览按钮,选择CA证书文件,例如“cacert.crt”。由于Windows并不识别“cacert.pem”文件,需将其更名为“cacert.crt”。在下一步窗口中选择证书存储位置,选择“受信任的根证书颁发机构”项。点击“完成”按钮完成CA证书导入。

注销数字证书

签发证书目的是为了证明证书内公钥拥有者的合法身份。使用公钥可以对传输的数据进行加密,这些加密数据只有使用证书公钥对应的私钥才可以解密。如果将私钥文件遗失,那么得到密钥的人就可以解密所有的加密数据。为避免出现这种情况,最好及时注销数字证书。在注销之前,必须生成证书注销清单。执行“echo"01" > /etc/pki/CA/crlnumber”命令,用来生成真是过户注销编号,编号从01开始,每注销一个证书该值累加1。执行“cd /etc/pki/CA/crl”命令,切换到指定目录。执行“openssl ca gencrl–out crl.pem”命令,生成证书注销清单。

要注销某个证书,必须先获得这个证书。这并不需要使用者提供证书文件。当在CA服务器上签发证书时,系统会自动在“/etc/pki/CA/newcerts”目录下保存一个副本。执行“cd/etc/pki/CA/newcerts”,“openssl ca revoke../newcerts/01.pem”,命令,就可以注销指定编号的证书,这里注销的是“01.pem”证书。然后执行“openssl ca–gencrl–out crl.pem”命令,重新生成新的证书来注销清单。

浅析HTTPS安全连接机制

当访问网络上的主机时,可能需要确认服务器的身份,这就要求通过服务器的数字证书来验证,数字证书是一种无法被篡改的数字信息。例如从HTTPS连接的原理上说,当客户端对Web服务器提出HTTPS连接请求,Web服务器会将其存储的公钥发送给客户端,客户端的应用程序会随机生成一个会话密钥,并使用公钥对会话密钥进行加密,之后将其发送给Web服务器。Web服务器使用私钥将加密的会话密钥解密,这样,该会话密钥就只有客户端和Web服务器才拥有。之后彼此之间的传输的数据使用会话密钥进行对称加密。

不过上述方法存在问题,因为无法确认目标对象就是真实的Web主机。黑客可以篡改HOSTS文件的方法将客户端劫持到虚假的网站。即使在公钥上附加了拥有者的信息也无法证明所连接网站的真实身份。为提高公信力,可以将证书提交给CA处理,CA会将其自身的信息加入到证书申请单中,并添加有效期限信息,最后进行签名处理。签名就是将证书中的网站信息、公钥信息、CA信息、有效期等内容进行哈希计算,将计算后得到的指纹使用CA私钥进行加密,最后得到数字证书。

这样就可以确保网站的合法身份了。在Web服务器上将网站的证书和私钥准备完毕后,当客户端对该Web服务器进行HTTPS连接请求时,Web服务器会将其证书传送给客户端主机,当客户端接收到Web服务器发来的证书后,会执行证书的验证操作。验证的方法是将证书中的网站信息、公钥信息、CA信息、有效期等内容进行哈希计算,得到一个指纹信息。之后从存储在系统中的CA证书中读取公钥信息,对从Web网站证书中获得CA私钥加密,得到另一个指纹信息。因为CA私钥保存在证书中,而各大CA证书其实已经内置在系统中,如果两者指纹不一致,客户端的应用程序就会发出警告信息。如果一致表明验证通过,客户端会使用随机数生成会话密钥,并且使用证书中的公钥来加密会话密钥,之后将其发送给Web服务器。当Web服务器收到被加密处理后的会话密钥后,使用其私钥将其解密。然后客户端和Web服务器之间传输的数据都会使用会话密钥进行加密处理。

猜你喜欢
数字证书申请单私钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
无线网络安全认证研究
临床输血申请单不合格项目分析及应对措施
运用PDCA循环提高输血申请单的合格率和规范性
一种基于虚拟私钥的OpenSSL与CSP交互方案
我院检查申请单流程设计与应用
PDCA循环在输血申请单规范填写管理中的作用
基于数字证书的军事信息系统安全防护方案