`
ideage
  • 浏览: 326267 次
社区版块
存档分类
最新评论

openssl 生成pem 建立CA

阅读更多

openssl生成pem

 
使用OpenSSL生成证书

首先得安装OpenSSL软件包openssl,安装了这个软件包之后,我们可以做这些事情:
o Creation of RSA, DH and DSA Key Parameters # 创建密钥 key
o Creation of X.509 Certificates, CSRs and CRLs # 创建证书
o Calculation of Message Digests                #
o Encryption and Decryption with Ciphers # 加密、解密
o SSL/TLS Client and Server Tests        # SSL 服务器端/客户端测试
o Handling of S/MIME signed or encrypted Mail # 处理签名或加密了的邮件

1、生成RSA密钥的方法

openssl genrsa -des3 -out privkey.pem 2048
这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成:
openssl genrsa -out privkey.pem 2048
建议用2048位密钥,少于此可能会不安全或很快将不安全。
2、生成一个证书请求
openssl req -new -key privkey.pem -out cert.csr
这个命令将会生成一个证书请求,当然,用到了前面生成的密钥privkey.pem文件
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。

如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem

3、使用数字证书和密钥
有了privkey.pem和cacert.pem文件后就可以在自己的程序中使用了,比如做一个加密通讯的服务器

-------------
OpenSSL建立自己的CA

(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 证书服务器客户端证书及密钥

    生成CA私钥的命令是 `openssl genrsa`,这个命令可以生成RSA类型的私钥。例如,以下命令将生成一个2048位的RSA私钥,保存到`ca.key`文件中: ```shell openssl genrsa -out ca.key 2048 ``` 为了增加安全性,你...

    openssl 生成ca证书 pkcs12 pem格式转换

    OpenSSL 生成 CA 证书 PKCS#12 PEM 格式转换 OpenSSL 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持 SSL/TLS 协议的实现。 OpenSSL 工具箱中包含了大量实用的命令和选项,...

    用openssl软件包生成CA

    ### 使用OpenSSL软件包生成证书颁发机构(CA) 在网络安全领域中,证书颁发机构(Certificate Authority,简称CA)扮演着非常重要的角色。它不仅能够验证并确保数字证书的有效性,还能帮助用户建立对网络通信的信任。...

    OpenSSL生成的ssl证书

    **OpenSSL生成的ssl证书** 在互联网安全领域,SSL(Secure Socket Layer)证书是保障网站数据传输安全的重要工具。OpenSSL是一个开源的库,包含了各种加密算法,它提供了生成SSL证书的功能。本教程将详细介绍如何...

    openssl生成证书

    【openssl生成证书】知识点详解 在IT领域,OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序用于测试或其他目的。生成证书是网络...

    openssl 生成client.jks与server.jks文件的方法

    `$ 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生成证书

    Java调用OpenSSL生成证书是一种常见的安全操作,用于创建数字证书,这些证书在网络安全中扮演着重要角色,例如HTTPS通信、服务器身份验证等。在这个过程中,我们通常会使用OpenSSL命令行工具,然后通过Java程序来...

    openssl生成秘钥工具

    下面,我们将详细讲解如何使用OpenSSL生成秘钥。 1. **生成RSA密钥对**: RSA是一种非对称加密算法,通常用于生成公钥和私钥对。你可以通过以下命令生成一个2048位的RSA密钥对: ``` openssl genpkey -algorithm...

    利用openssl生成CA证书的方法及证书

    本文将详细阐述如何利用OpenSSL生成CA证书以及相关的证书文件。 首先,我们需要理解证书的用途。在互联网通信中,证书用于验证服务器或客户端的身份,确保数据在传输过程中不被篡改。它们由证书签名请求(CSR)生成...

    使用openssl生成单向ssl证书

    通过以上步骤,你就成功地使用openssl生成了单向SSL证书,并将其应用于基于Boost.Asio的SSL通信测试。在实际生产环境中,通常会使用权威证书颁发机构签发的证书,以提供更高的信任度和安全性。但在测试和开发阶段,...

    Linux下用Openssl生成证书

    ### Linux下用OpenSSL生成证书 #### 一、概述 在现代互联网通信中,SSL/TLS协议被广泛应用于实现客户端与服务器之间的安全数据传输。为了确保这种通信的安全性,需要使用数字证书来验证服务器的身份。在Linux环境...

    使用openssl生成RSA密钥对

    ### 使用OpenSSL生成RSA密钥对 在网络安全与加密领域,使用公钥基础设施(Public Key Infrastructure,PKI)是常见的做法。其中,OpenSSL作为一款强大的工具库,提供了丰富的功能来支持各种加密算法,包括RSA算法。...

    Linux平台openssl工具生成CA证书的命令 配置文件 证书

    本主题将详细讲解如何在Linux平台上使用OpenSSL工具生成CA(Certificate Authority)证书,以及涉及的相关文件类型和配置。 首先,让我们了解什么是CA证书。CA证书是由受信任的证书颁发机构(如上述的CA)签发的,...

    openssl生成认证文件

    标题中的“openssl生成认证文件”指的是使用开源加密库OpenSSL来创建数字证书和密钥对,这在网络安全中是至关重要的。OpenSSL提供了各种命令行工具,如`openssl genpkey`、`openssl req`和`openssl x509`,用于生成...

    openssl生成器.rar

    首先,让我们来看看标题中的"openssl生成器.rar"。这通常是指一个预编译的OpenSSL可执行文件集合,它已经打包成一个便携式的、无需安装的版本,适用于Windows用户。这样的绿色版OpenSSL可以在任何支持的系统上直接...

    Linux下用Openssl生成证书[归类].pdf

    在Linux环境下,使用OpenSSL生成SSL X.509证书涉及一系列步骤,这些步骤对于软件开发,特别是涉及网络服务安全的项目至关重要。X.509证书是公钥基础设施(PKI)的一部分,用于验证服务器或客户端的身份。以下是一份...

    用tomcat和openSSL构建https双向认证

    这是我实战的笔记,全程直播。 #### Tomcat和Openssl...5、生成pem格式证书 6、生成pkcs12格式证书 二、tomcat实现双向认证 1、创建服务器信任的CA证书库 2、配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书)

    自动化脚本一键生成Nginx https证书证书格式为pem

    1. **生成RSA密钥对**:使用OpenSSL工具,我们可以运行`openssl genrsa -out server.key 2048`来生成一个2048位的RSA私钥。这个私钥应妥善保管,不要泄露。 2. **创建CSR(Certificate Signing Request)**:接下来...

    OpensslCA学习笔记

    其次,CA服务器需要有自己的证书和私钥,通常使用OpenSSL的`req`命令生成自签名的根证书作为CA服务器的证书。如果CA是上级CA的子CA,则需向上级CA提交证书请求并等待签名。 证书的数据库管理也很重要,可以采用SQL ...

Global site tag (gtag.js) - Google Analytics