`
ppjava
  • 浏览: 138461 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

openssl生成pem

 
阅读更多

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一节中。

分享到:
评论

相关推荐

    openssl之PEM系列

    OpenSSL 之 PEM 系列 OpenSSL 之 PEM 系列是 OpenSSL 库中的一组文件格式标准,用于加密和签名电子邮件。PEM 全称为 Privacy Enhanced Mail,它定义了一个标准,用于加密和签名电子邮件。 PEM 文件的基本结构包括...

    NET使用OpenSSL生成的pem密钥文件

    使用OpenSSL生成的pem密钥文件可以提供更好的安全性,因为OpenSSL可以生成更强的密钥。同时,使用pem格式的密钥文件可以使得密钥的存储和传输更方便。 七、结论 在.NET中,可以使用OpenSSL生成的pem密钥文件来实现...

    .net DSA加密(C#读取OPENSSL生成的DSA的pem文件的秘钥)

    在本资源中,我们关注的是如何使用C#来处理OpenSSL生成的PEM格式的DSA密钥。PEM(Privacy Enhanced Mail)是一种文本编码格式,通常用于存储证书和密钥,它使用Base64编码将二进制数据转化为可读的ASCII字符。 首先...

    OpenSSL生成的ssl证书

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

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

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

    openssl生成证书

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

    openssl密钥生成工具

    在本文中,我们将深入探讨如何使用OpenSSL生成公钥和私钥。 ### 公钥和私钥基础 在加密领域,公钥和私钥是基于非对称加密技术的核心概念。非对称加密允许用户拥有两个密钥:一个公钥和一个私钥。公钥可以公开分享...

    java调用openssl生成证书

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

    使用 OpenSSL 创建生成CA 证书服务器客户端证书及密钥

    在网络安全中,OpenSSL 是一个强大的安全套接层 (SSL) 工具包,它包含了各种用于处理加密通信所需的工具,包括生成证书、密钥以及执行加密操作。本文将详细介绍如何使用 OpenSSL 创建和管理CA证书、服务器证书和...

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

    openssl 生成 client.jks 与 server.jks 文件的方法 在 WS 安全性设计中,使用 OpenSSL 生成 client.jks 与 server.jks 文件是非常必要的。下面我们将详细介绍如何使用 OpenSSL 生成这两个文件。 Step 1: 创建证书...

    openssl生成秘钥工具

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

    OpenSSL证书生成器

    OpenSSL 证书生成器 可用于apache的ssl证书生成

    使用openssl生成单向ssl证书

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

    Hmailserver配置openSSL生成密钥公钥Win64OpenSSL+DKIM

    Hmailserver配置openSSL生成密钥公钥Win64OpenSSL+DKIM,文件内容有Win64OpenSSL_Light-1_1_1w,GenDKIM.bat,GenDKIMtxt.exe,makeHMScert.bat,先安装Win64OpenSSL_Light-1_1_1w,然后进入安装目录的bin目录下,将...

    Linux下用Openssl生成证书

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

    OpenSSL 中RSA16进制密钥生成方法

    在Linux下,使用OpenSSL生成RSA密钥的步骤如下: 1. 安装OpenSSL:首先,确保系统已经安装了OpenSSL。如果没有,可以通过包管理器(如`apt-get`或`yum`)来安装。例如,在Ubuntu上,可以运行`sudo apt-get install ...

    生成公钥密钥工具(Openssl) 64位

    openssl rsa -pubout -in private_key.pem -out public_key.pem ``` 这会生成一个名为`public_key.pem`的文件,其中包含与私钥对应的公钥。 **4. 公钥和私钥的应用** - **HTTPS通信**:在Web服务器上,公钥用于...

    支付宝OPENSSL生成工具-windows

    **支付宝 OPENSSL 生成工具在 Windows 环境下的应用** 在互联网支付领域,支付宝作为中国领先的第三方支付平台,其安全性和稳定性对于开发者和商家至关重要。为了确保交易过程中的数据安全,支付宝要求开发者使用...

    OpenSSL工具生成RSA密钥1

    在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...

    用OpenSSL把二进制的Cer证书转换程Base64格式的PEM格式的证书.docx

    本文将详细介绍如何使用OpenSSL工具将二进制的CER证书转换为Base64编码的PEM格式。 首先,了解OpenSSL:OpenSSL是一个强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL...

Global site tag (gtag.js) - Google Analytics