(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 生成 CA 证书 PKCS#12 PEM 格式转换 OpenSSL 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持 SSL/TLS 协议的实现。 OpenSSL 工具箱中包含了大量实用的命令和选项,...
生成CA私钥的命令是 `openssl genrsa`,这个命令可以生成RSA类型的私钥。例如,以下命令将生成一个2048位的RSA私钥,保存到`ca.key`文件中: ```shell openssl genrsa -out ca.key 2048 ``` 为了增加安全性,你...
### 使用OpenSSL软件包生成证书颁发机构(CA) 在网络安全领域中,证书颁发机构(Certificate Authority,简称CA)扮演着非常重要的角色。它不仅能够验证并确保数字证书的有效性,还能帮助用户建立对网络通信的信任。...
**OpenSSL生成的ssl证书** 在互联网安全领域,SSL(Secure Socket Layer)证书是保障网站数据传输安全的重要工具。OpenSSL是一个开源的库,包含了各种加密算法,它提供了生成SSL证书的功能。本教程将详细介绍如何...
【openssl生成证书】知识点详解 在IT领域,OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序用于测试或其他目的。生成证书是网络...
`$ openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out cacert.pem -config openssl.cnf` 其中,`cakey.pem` 是 CA 的私钥,`cacert.pem` 是 CA 的证书。`openssl.cnf` 是 OpenSSL 的配置文件,用于配置...
Java调用OpenSSL生成证书是一种常见的安全操作,用于创建数字证书,这些证书在网络安全中扮演着重要角色,例如HTTPS通信、服务器身份验证等。在这个过程中,我们通常会使用OpenSSL命令行工具,然后通过Java程序来...
下面,我们将详细讲解如何使用OpenSSL生成秘钥。 1. **生成RSA密钥对**: RSA是一种非对称加密算法,通常用于生成公钥和私钥对。你可以通过以下命令生成一个2048位的RSA密钥对: ``` openssl genpkey -algorithm...
本文将详细阐述如何利用OpenSSL生成CA证书以及相关的证书文件。 首先,我们需要理解证书的用途。在互联网通信中,证书用于验证服务器或客户端的身份,确保数据在传输过程中不被篡改。它们由证书签名请求(CSR)生成...
通过以上步骤,你就成功地使用openssl生成了单向SSL证书,并将其应用于基于Boost.Asio的SSL通信测试。在实际生产环境中,通常会使用权威证书颁发机构签发的证书,以提供更高的信任度和安全性。但在测试和开发阶段,...
### Linux下用OpenSSL生成证书 #### 一、概述 在现代互联网通信中,SSL/TLS协议被广泛应用于实现客户端与服务器之间的安全数据传输。为了确保这种通信的安全性,需要使用数字证书来验证服务器的身份。在Linux环境...
### 使用OpenSSL生成RSA密钥对 在网络安全与加密领域,使用公钥基础设施(Public Key Infrastructure,PKI)是常见的做法。其中,OpenSSL作为一款强大的工具库,提供了丰富的功能来支持各种加密算法,包括RSA算法。...
本主题将详细讲解如何在Linux平台上使用OpenSSL工具生成CA(Certificate Authority)证书,以及涉及的相关文件类型和配置。 首先,让我们了解什么是CA证书。CA证书是由受信任的证书颁发机构(如上述的CA)签发的,...
标题中的“openssl生成认证文件”指的是使用开源加密库OpenSSL来创建数字证书和密钥对,这在网络安全中是至关重要的。OpenSSL提供了各种命令行工具,如`openssl genpkey`、`openssl req`和`openssl x509`,用于生成...
首先,让我们来看看标题中的"openssl生成器.rar"。这通常是指一个预编译的OpenSSL可执行文件集合,它已经打包成一个便携式的、无需安装的版本,适用于Windows用户。这样的绿色版OpenSSL可以在任何支持的系统上直接...
在Linux环境下,使用OpenSSL生成SSL X.509证书涉及一系列步骤,这些步骤对于软件开发,特别是涉及网络服务安全的项目至关重要。X.509证书是公钥基础设施(PKI)的一部分,用于验证服务器或客户端的身份。以下是一份...
这是我实战的笔记,全程直播。 #### Tomcat和Openssl...5、生成pem格式证书 6、生成pkcs12格式证书 二、tomcat实现双向认证 1、创建服务器信任的CA证书库 2、配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书)
3. 生成自签名证书,命令:openssl x509 -req -in cert.csr -signkey private_key.pem -out cert.pem 使用 OpenSSL 命令生成证书和自签名需要一步步地完成,包括预安装准备、安装 OpenSSL、编程设置等步骤。
1. **生成RSA密钥对**:使用OpenSSL工具,我们可以运行`openssl genrsa -out server.key 2048`来生成一个2048位的RSA私钥。这个私钥应妥善保管,不要泄露。 2. **创建CSR(Certificate Signing Request)**:接下来...