(1) 环境准备
首先,需要准备一个目录放置CA文件,包括颁发的证书和CRL(Certificate Revoke List)。
这里我们选择目录 /opt/ca。
然后我们在/opt/ca下建立两个目录,certs用来保存我们的CA颁发的所有的证书的副本;private用来保存CA证书的私钥匙。
CA的私钥匙很重要,至少需要2048位长度。建议保存在硬件里,或者至少不要放在网络中。
除了生成钥匙,在我们的CA体系中还需要创建三个文件。第一个文件用来跟踪最后一次颁发的证书的序列号,我们把它命名为serial,初始化为01。第二个文件是一个排序数据库,用来跟踪已经颁发的证书。我们把它命名为index.txt,文件内容为空。
$ mkdir /opt/myca
$ cd /opt/myca
$ mkdir certs private
$ chmod g-rwx,o-rwx private
$ echo "01" > serial
$ touch index.txt
第三个文件是OpenSSL的配置文件,创建起来要棘手点。示例如下:
[ ca ]
default_ca = myca
[ myca ]
dir = /opt/myca
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/certs
private_key = $dir/private/cakey.pem
serial = $dir/serial
default_crl_days= 7
default_days = 365
default_md = md5
policy = myca_policy
x509_extensions = certificate_extensions
[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = supplied
organizationName= supplied
organizationalUnitName = optional
[ certificate_extensions ]
basicConstraints= CA:false
我们需要告诉OpenSSL配置文件的路径,有两种方法可以达成目的:通过config命令选项;通过环境变量OPENSSL_CONF。这里我们选择环境变量的方式。
$ OPENSSL_CONF="/opt/myca/openssl.cnf"
$ export OPENSSL_CONF
(2) 生成根证书(Root Certificate)
我们需要一个证书来为自己颁发的证书签名,这个证书可从其他CA获取,或者是自签名的根证书。这里我们生成一个自签名的根证书。
首先我们需要往配置文件里面添加一些信息,如下所示,节名和命令行工具的命令req一样。我们把所有必要的信息都写进配置,而不是在命令行输入,这是唯一指定X.509v3扩展的方式,也能让我们对如何创建根证书有个清晰的把握。
[ req ]
default_bits = 2048
default_keyfile = /opt/myca/private/cakey.pem
default_md = md5
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
[ root_ca_distinguished_name ]
commonName = My Test CA
stateOrProvinceName = Beijing
countryName = CN
emailAddress = yingyuan@staff.sina.com.cn
organizationName = Root Certification Authority
[ root_ca_extensions ]
basicConstraints = CA:true
万事俱备,我们可以生成根证书了。注意设置好环境变量OPENSSL_CONF。
$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM
验证一下我们生成的文件。
$ openssl x509 -in cacert.pem -text -noout
(3) 给客户颁发证书
在给客户颁发证书之前,需要客户提供证书的基本信息。我们另外开启一个终端窗口,使用默认的OpenSSL配置文件(不要让之前的OPENSSL_CONF干扰我们,那个配置是专门用来生成根证书的)。
命令和我们生成根证书的类似,都是req,不过需要提供一些额外的信息。如下:
$ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM
有两次提示要口令,第一次的口令用来加密私钥匙testkey.pem,第二次口令一般被OpenSSL忽略。
结果生成两个文件:testkey.pem,私钥匙;testreq.pem,请求信息,其中包括公钥匙。
我们来看看testreq.pem都有哪些信息?
$ openssl req -in testreq.pem -text -noout
现在,我们可以把testreq.pem提交给我们的CA生成证书了。
为了方便起见,我们假定testreq.pem在/opt/myca/private/中。
$ openssl ca -in testreq.pem
有三次提示,一次是问你CA的私钥匙密码,两次是确认,输出的结果就是为客户颁发的证书。
可以通过batch选项取消命令提示,可通过notext选项取消证书的输出显示。
此外,还可以一次给多个客户颁发证书,方法是用 infiles选项替换in选项,不过这个选项必须放在最后,因为此后的任何字符均被处理为文件名称列表。
生成的证书放在certs目录,同时index.txt和serial的内容都发生了改变。
(4) 吊销证书
吊销证书的操作很简单,我们将待吊销的证书从证书的保存位置拷贝到另外一个目录,然后运行ca命令就可以。
主要设置好OPENSSL_CONF环境变量。
$ cp certs/01.pem testcert.pem
$ openssl ca -revoke testcert.pem
输入CA私钥匙的密码就可以。
为了使你的吊销操作让别人知道,你可以生成CRL(Certificate Revoke List),然后公布到网上去。
由于每个颁发的证书都有一个过期时间,一旦证书过期了,就可以把该证书从CRL中删除。因为这时候在不在CRL中已经无所谓了。
# 生成CRL列表
$ openssl ca -gencrl -out exampleca.crl
# 查看CRL列表信息
$ openssl crl -in exampleca.crl -text -noout
# 验证CRL列表签名信息
$ openssl crl -in exampleca.crl -noout -CAfile cacert.pem
可以看到CRL的版本号为1,这是OpenSSL默认的,除非crl_extensions被指定在配置文件ca一节中。
文章一:http://blog.chinaunix.net/u/11234/showart_290705.html
文章二:http://blog.chinaunix.net/u/11234/showart_291316.html
相关推荐
openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。
文档包含一篇《openssl生成CA证书过程》及 openssl.cnf、*.key、*.pem、*.csr、*.crt文件共13个文件,按照文档的指导操作可以生成类似的文件。
使用OpenSSL生成密钥与证书,并进行双向验证
这是我实战的笔记,全程直播。 #### Tomcat和Openssl...5、生成pem格式证书 6、生成pkcs12格式证书 二、tomcat实现双向认证 1、创建服务器信任的CA证书库 2、配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书)
用法self-signed-tls [OPTIONS]self-signed-tls --trust -c US -s California -l 'Los Angeles' -o 'Example Org' -u 'Example Unit'self-signed-tls --ca-key=/path/to/CA.key --ca-cert=/path/to/CA.pem --ca-only...
22.2 openssl的PEM实现 160 22.3 PEM函数 161 22.4 编程示例 161 第二十三章 Engine 165 23.1 Engine概述 165 23.2 Engine支持的原理 165 23.3 Engine数据结构 166 23.4 openssl 的Engine源码 167 23.5 Engine函数 ...
236 30.2 openss实现 236 30.3数据结构 236 30.4函数 237 30.5 编程示例 239 第三十一章 Openssl SSL实现 249 31.1概述 249 31.2 openssl实现 249 31.3 建立SSL测试环境 249 31.4 数据...
事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。 5.SSL和TLS协议 OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。...
236 30.2 openss实现 236 30.3数据结构 236 30.4函数 237 30.5 编程示例 239 第三十一章 Openssl SSL实现 249 31.1概述 249 31.2 openssl实现 249 31.3 建立SSL测试环境 249 31.4 数据...
事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。 5.SSL和TLS协议 OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。...
1:生成CA证书 2:生成私钥文件(mykey.pem) 3:生成证书申请请求(myserver.csr) 4:通过证书申请请求用CA证书颁发证书mycert.pem 5:生成自签名证书 6:指定配置文件颁发证书
openssl rsa -in server.key -pubout -out server.pem //第二步,生成 CA 证书 #生成 CA 私钥 openssl genrsa -out ca.key 1024 #X.509 Certificate Signing Request (CSR) Management. ca证书签名请求 #要求填写...
[root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem ————————————————————————————– mysql准备私钥及证书申请...
CA 使用 OpenSSL 数据库签署证书请求(使用配置) 创建 DER、NET 或 PEM 格式的证书 将证书转换为 DER、NET 或 PEM 格式 验证证书 从证书获取信息 创建证书吊销列表 (CRL) 吊销证书吊销列表中的证书 将 CRL 转换为...
Delphi 的https 服务程序。包含19年的libeay32.dll和ssleay32.dll。和openssl生成的三个cacert.pem、cert.pem、key.pem
用openssl生成RSA公钥与私钥,此处为windows版本,在官网下载,日期:2017.11.03号
执行后,将会在指定目录生成test01.pem文件,这个文件将会在下一个步骤,对LoadRunner进行配置的时候使用到。 2.LR配置 启动LoadRunner,打开Recording Option选项。 留意红色框中的选项。 选择后,单击New ...
第二章 openssl 简介................................................................................................................15 2.1 openssl 简介.....................................................