OpenSSL工具包是Linux上SSL v2/v3和TLS v1协议的实现方式之一,并建提供了常用的加密解密功能。
OpenSSL主要由三部分组成:
1:libcrypto:加密库,主要用来实现加密、解密的功能库
2:libssl:实现SSL服务器端功能会话库
3:openssl命令行工具:/usr/bin/openssl
本文仅是介绍如何通过openssl命令创建私有CA,以及如何申请证书、签署证书等过程。
证书主要包含的就是拥有者自身的属性信息、公钥以及CA的签名,核心就是用户的公钥。服务器端拥有有了证书之后,就可以把证书发给客户端,客户端接受此证书,接下来才可以与服务器端建立ssl会话、建立ssl连接。
仅为实验目的,所以不会去向收费的公共CA去申请证书,那么我们就可以自己创建一个私有CA,用于给我们的服务器颁发证书作内部使用。
创建私有CA的前提:
使用openssl就可以模拟出来一个自建的CA,在此之前,我们先来看一下openssl工具的的配置文件/etc/pki/tls/openssl.cnf:
[ CA_default ]段是定义了自建CA需要的一些文件路径及文件名,其中一些关键项如下:
[ CA_default ]
dir = /etc/pki/CA # Where everything is kept
private_key =$dir/private/cakey.pem # The private key
##自建CA其本身自己的私钥文件为/etc/pki/CA/private/cakey.pem
certificate =$dir/cacert.pem # The CAcertificate
##CA本身自签证书文件名为/etc/pki/CA/cacert.pem
CA自己必须有证书才能给别人发证。但是没人给CA发证,所以CA自己给自己颁发证书,即所谓的自签证书。
database =$dir/index.txt # database indexfile
##数据库索引文件为/etc/pki/CA/index.txt
serial = $dir/serial # The current serial number
##序列号文件为/etc/pki/CA/serial
所以接下来我们使用openssl工具创建私有CA时,所涉及到的路径和文件名需要和配置文件中默认的保持一致,否则我们就需要同时修改此配置文件。
创建私有CA的步骤:
#cd /etc/pki/CA/
1、为CA自己生成一个私钥
#(umask 077; openssl genrsa-out private/cakey.pem 2048)
因为私钥文件需设置权限为除属主外,其他人都不可以读,即设为600。可使用此命令即可以一步到位地生成私钥文件的同时,设置好了权限。(加括号,意为umask 077命令只对子shell有效,对当前shell无效)
2、生成自签证书
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
... Country Name: ...
注:自建CA的自签证书的Common Name前面所有的国家、组织等信息,和证书签署请求中填写的必须保持一致。否则自建CA无法签署。因为这是我们自建的私有CA只能在内部自己使用。
此时自建CA的私钥文件cakey.pem和自签证书cacert.pem都已具备,各种工作目录certs、crl、newcerts也都已存在,现在就缺少了一个序列号文件serial和一个数据库文件index.txt。
3、自建证书数据库文件
#touch index.txt
4、自建一个序列号文件,并且是从01开始
#echo 01 > serial
此时即创建了自建CA,可以开始给别人签证了。
签署证书:
我们自己创建好的CA所在的主机,接收到别人发来的证书签署请求后,执行如下命令,即可签署证书,生成证书文件。
#openssl ca -in /path/to/certreq.csr -out/path/to/certfile.crt -days 365
CA给别人签署证书之后,index.txt文件中即查看到证书信息,serial文件编号也改变。
我们已经有了私有CA了,接下来我们的服务器则可以向这个CA申请证书了。
申请证书的步骤:
1、自己生成一个私钥;
#(umask 077; opensslgenrsa -out /root/mykey2.pri 2048)
2、制作一个证书签署请求;(此过程会自动从私钥中提取公钥,并附加上个人信息)
#openssl req -new -key /path/to/private_key -out /path/to/certificate.csr
... Country Name: ...
还记得此处吗,前文提到过,此处Country Name之前的信息,需要和创建私有CA的自签证书时填写的信息一致。
3、将此制作好的证书签署请求的文件,发给我们自建的CA所在的主机(当然实验中也可以是同一台逐句),CA签署之后即可生成证书文件,拿到此证书文件即可使用了。
本文出自 “斑马Linux” 博客,请务必保留此出处http://zebralinux.blog.51cto.com/8627088/1540851
使用OpenSSL创建私有CA、签署证书,布布扣,bubuko.com
原文:http://zebralinux.blog.51cto.com/8627088/1540851