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

Openssl生成根证书、服务器证书并签核证书

 
阅读更多

 

http://blog.csdn.net/gloomuu/article/details/4456501

 

Step 1. Create key (password protected)

 

openssl genrsa -out prvtkey.pem 1024/2038                     (with out password protected)   

openssl genrsa -des3 -out prvtkey.pem 1024/2048    (password protected)


这个命令会生成一个1024/2048位的密钥。
Step 2. Create certification request

openssl req -new -key prvtkey.pem -out cert.csr

openssl req -new -nodes -key prvtkey.pem -out cert.csr

这个命令将会生成一个证书请求,当然,用到了前面生成的密钥prvtkey.pem文件
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。

Step 3: Send certificate request to Certification Authority (CA)

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

 

 


cacert.pem 生成过程见“OpenSSL建立自己的CA

 

有了privkey.pemcacert.pem文件后就可以在自己的程序中使用了,比如做一个加密通讯的服务器

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

 

 

(1) 环境准备

首先,需要准备一个目录放置CA文件,包括颁发的证书和CRL(Certificate Revoke List)
这里我们选择目录 /var/MyCA

然后我们在/var/MyCA下建立两个目录,certs用来保存我们的CA颁发的所有的证书的副本;private用来保存CA证书的私钥匙。

除了生成钥匙,在我们的CA体系中还需要创建三个文件。第一个文件用来跟踪最后一次颁发的证书的序列号,我们把它命名为serial,初始化为01。第二个文件是一个排序数据库,用来跟踪已经颁发的证书。我们把它命名为index.txt,文件内容为空。

$ mkdir /var/MyCA
$ cd /var/MyCA
$ mkdir certs private
$ chmod g-rwx,o-rwx private
$ echo "01" > serial
$ touch index.txt

第三个文件是OpenSSL的配置文件,创建起来要棘手点。示例如下:

$ touch openssl.cnf

文件内容如下:

[ ca ]
default_ca = myca

[ myca ]
dir = /var/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=/var/MyCA/openssl.cnf"
$ export OPENSSL_CONF

(2) 生成根证书 (Root Certificate)

我们需要一个证书来为自己颁发的证书签名,这个证书可从其他CA获取,或者是自签名的根证书。这里我们生成一个自签名的根证书。

首先我们需要往配置文件里面添加一些信息,如下所示,节名和命令行工具的命令req一样。我们把所有必要的信息都写进配置,而不是在命令行输入,这是唯一指定X.509v3扩展的方式,也能让我们对如何创建根证书有个清晰的把握。

[ req ]
default_bits = 2048
default_keyfile = /var/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 = HZ
countryName = CN
emailAddress = test@cert.com 
organizationName = Root Certification Authority
[ root_ca_extensions ]
basicConstraints = CA:true

万事俱备,我们可以生成根证书了。注意设置好环境变量OPENSSL_CONF

$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 356

注:“-days 356“控制有效期限为365天,默认为30天。

验证一下我们生成的文件。

$ 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//var/MyCA/private/中。

$ openssl ca -in testreq.pem

有三次提示,一次是问你CA的私钥匙密码,两次是确认,输出的结果就是为客户颁发的证书。
可以通过batch选项取消命令提示,可通过notext选项取消证书的输出显示。
此外,还可以一次给多个客户颁发证书,方法是用 infiles选项替换in选项,不过这个选项必须放在最后,因为此后的任何字符均被处理为文件名称列表。

生成的证书放在certs目录,同时index.txtserial的内容都发生了改变。

分享到:
评论

相关推荐

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

    在测试环境中,你可以自签证书,但在生产环境中,应该使用权威的公共CA或者购买商业证书,以提高用户的信任度。 总结来说,OpenSSL 提供了生成和管理SSL证书的全套工具,通过创建CA证书、服务器证书和客户端证书,...

    openssl生成的证书demo

    在这个“openssl生成的证书demo”中,我们将探讨如何使用OpenSSL生成证书、证书签名请求(CSR)以及自签名的根证书权威(CA),并理解这些组件在安全通信中的作用。 首先,我们来了解什么是证书。在SSL/TLS协议中,...

    自签署根证书、服务器证书、客户端证书

    本文将深入探讨“自签署根证书”、“服务器证书”以及“客户端证书”的概念、用途和操作流程。 首先,我们来看“自签署根证书”。根证书是信任链的基础,它由证书颁发机构(CA)签发,用来验证其他证书的真实性。自...

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

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

    Linux下用Openssl生成证书

    #### 三、生成根证书 1. **制作根私钥**:使用OpenSSL生成一个带有DES3加密的2048位RSA私钥。 ```bash openssl genrsa -des3 -out private/ca.key.pem 2048 ``` 2. **填写证书申请表**:根据私钥生成证书请求...

    openssl命令操作证书链实例

    这个命令会生成一个有效期为3650天的2048位RSA密钥对,并使用配置文件`openssl.cnf`中的设置自签发根CA证书。 2. **生成中间CA证书**: ``` openssl req -new -key intermediateCA.key -out intermediateCA.csr ...

    CA证书生成工具OpenSSL

    4. **配置信任**:在操作系统或应用程序中,你需要将这个CA证书添加到信任的根证书列表中,以便系统能够识别并接受由该CA签发的证书。 5. **签发服务器/用户证书**:有了CA证书后,你可以为服务器或用户提供证书。...

    基于openssl 自行签发https 协议证书 openssl+nginx实现https自签有效加密实战记录

    文章中使用了openssl生成根密钥、根证书、私钥和服务器证书。 知识点二:根证书的生成 根证书是证书链的起点,它是自签发证书的基础。文章中使用了openssl生成根秘钥和根证书,并将其转换为cer格式。 知识点三:...

    利用openssl自制CA证书

    本教程将深入探讨如何利用开源工具openssl创建自定义的证书颁发机构(CA),并实现将CA证书安装到浏览器的受信任根证书存储区,以供自定义网络服务使用。 首先,我们需要了解openssl工具。OpenSSL是一个强大的安全...

    weblogic+OPENSSL+生成证书的SSL详细配置手册

    根据提供的文档信息,本文将详细解释如何通过OpenSSL生成安全证书并在WebLogic环境中进行SSL配置与验证的过程。本文档分为几个部分:安装OpenSSL、创建证书、WebLogic环境的SSL配置,以及HTTPS验证。 ### 一、安装...

    openssl生成认证证书的工具

    他们会给你发来两个cer文件,一个是服务器证书,一个是根证书 如果你只是要使用https,那么证书自己签署就可以了。 在命令行下进入刚才解压的目录,找到openssl.exe所在的目录,执行以下命令 openssl x509 -req -...

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

    在实际应用中,服务器会使用`server.crt`和`server.key`进行SSL/TLS加密,而客户端则会使用`client.crt`和`client.key`来验证服务器并进行双向认证。对于某些场景,如内部网络或特定应用,可能还需要配置服务器以...

    OpenSSL 解析P12格式证书文件

    4. **证书链**:在某些情况下,P12文件可能包含了完整的证书链,包括中间证书和根证书。解析P12文件时,这些证书可以被提取出来,以供验证或安装到服务器或客户端的信任存储中。 5. **安全注意事项**:处理P12文件...

    使用OpenSSL来制作证书,在IIS中配置HTTPS(SSL)笔记.pdf

    1. **生成客户端证书请求**:与服务器端类似,使用OpenSSL生成客户端证书请求。 2. **签发客户端证书**:使用根证书对客户端证书请求进行签发。 3. **安装客户端证书**:将签发好的客户端证书导入客户端浏览器或其他...

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

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

    测试的根证书与子证书的签名应用

    1. **创建根证书**:使用命令行工具(如OpenSSL)生成自签名的根证书,设置合适的有效期、密钥长度等参数。 2. **生成子证书**:使用根证书的私钥对子证书进行签名,生成包含目标实体信息(如域名、组织名)的证书...

    Linux下使用openssl制作CA及证书颁发[参考].pdf

    2. 生成 CA 的私钥和自签名证书(即根证书) 3. 创建一个配置文件,以便后续 CA 日常操作中使用 4. CA 的日常操作,包括创建私钥、查看创建的密钥、创建请求文件、查看创建的请求文件、根据证书申请请求签发证书等 5...

Global site tag (gtag.js) - Google Analytics