`
囧囧有神
  • 浏览: 206590 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用OpenSSL建立根CA及自签名证书制作过程

    博客分类:
  • SSL
阅读更多

Openssl版本:0.9.8 版本,可从http://www.openssl.org 处下载。

  1. 先建立如下目录结构

$home/testca                            # testca 是待建CA的主目录
                 ├─newcerts/            # newcerts子目录将存放CA签发过的数组证书(备份目录)
                 ├─private/                # private目录用来存放CA私钥
                 └─conf/                       # conf目录用来存放简化openssl命令行参数用的配置文件

 此外使用命令

 echo "01" > serial  

 touch index.txt 

 ca根目录下创建文件serial (用来存放下一个证书的序列号) indext.txt (证书信息数据库文件)

 

  1. 生成CA的私钥和自签名证书 (根证书)

创建配置文件:vi "$HOME/testca/conf/gentestca.conf"

文件内容如下:

####################################
[ req ]

default_keyfile = /home/cx/testCA/private/cakey.pem

default_md = md5

prompt = no

distinguished_name = ca_distinguished_name

x509_extensions = ca_extensions

 

[ ca_distinguished_name ]

organizationName = ss

organizationalUnitName  = sstc

commonName = sstcCA

emailAddress = GChen2@statestreet.com  #自己的邮件地址

 

[ ca_extensions ]

basicConstraints = CA:true
########################################

 

然后执行命令如下:
cd "$HOME/testca"
openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 2190 -config "$HOME/testca/conf/gentestca.conf"
执行过程中需要输入CA私钥的保护密码,假设我们输入密码: 888888
 
可以用如下命令查看一下CA自己证书的内容

openssl x509 -in cacert.pem -text –noout

 

创建一个配置文件,以便后续CA日常操作中使用
vi "$HOME/testca/conf/testca.conf"
文件内容如下:

########################################

[ ca ]

default_ca     = testca                               # The default ca section

 

[ testca ]

dir            = /home/cx/testCA                   # top dir

database       = $dir/index.txt                    # index file.

new_certs_dir  = $dir/newcerts                 # new certs dir

 

certificate    = $dir/cacert.pem                  # The CA cert

serial         = $dir/serial                            # serial no file

private_key    = $dir/private/cakey.pem    # CA private key

RANDFILE       = $dir/private/.rand           # random number file

 

default_days   = 365                           # how long to certify for

default_crl_days= 30                           # how long before next CRL

default_md     = md5                          # message digest method to use

unique_subject = no                           # Set to 'no' to allow creation of

                                                           # several ctificates with same subject.

Policy = policy_any                            # default policy

 

[ policy_any ]

countryName             = optional

stateOrProvinceName     = optional

localityName            = optional

organizationName        = optional

organizationalUnitName  = optional

commonName              = supplied

emailAddress            = optional

########################################

 

  1. 自己生成公钥密钥,并用测试CA签发数字证书

我们在平时测试时,可以自己用openssl为服务器或用户生成公钥密钥,并用上面创建的CA签发对应私钥(密钥)的数字证书。
假设,我们就用刚才创建CA的操作系统用户为名为testuser的用户创建数字证书,我们要把待创建的私钥、证书等都放在目录$HOME/testuser下:

Ø       创建密钥和证书请求(证书请求里包含了公钥)

创建$HOME/testuser目录并执行命令:
mkdir $HOME/testuser
cd $HOME/testuser
openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM -subj "/O=TestCom/OU=TestOU/CN=testuser"
执行过程中需要输入私钥的保护密码,假设我们输入密码: 222222

其中的CN最好和服务器名或IP地址一致。

执行完后,testkey.pem即为用户的密钥,而testreq.pem即为证书请求。
可以用openssl req -in testreq.pem -text -noout查看证书请求的内容。

 

Ø       用测试CAtestuser签发证书

同样还在$HOME/testuser目录下执行命令:
openssl ca -in testreq.pem -out testcert.pem -config "$HOME/testca/conf/testca.conf"
执行过程中需要输入CA的密钥保护密码(刚才设置的888888),并且最后询问你是否要给该用户签发证书时要选y
 
执行完后,testcert.pem即为证书,
可以用命令openssl x509 -in testcert.pem -text -noout查看证书内容

 

Ø       制作一个PKCS12格式的文档(个人数字证书)

我们制作的这个PKCS#12文件将包含密钥、证书和颁发该证书的CA证书。该文件可以直接用于服务器数字证书或个人数字证书。
把前几步生成的密钥和证书制作成一个pkcs12文件的方法执行命令:
openssl pkcs12 -export -in testcert.pem -inkey testkey.pem -out testuser.p12 -name testuser -chain -CAfile "$HOME/testca/cacert.pem"
执行过程中需要输入保护密钥的密码(222222),以及新的保护pkcs12文件的密码。

     

  1. CA 的日常操作

Ø       根据证书申请请求签发证书
假设收到一个证书请求文件名为req.pem,文件格式应该是PKCS#10格式(标准证书请求格式)。
 
首先可以查看一下证书请求的内容,执行命令:
openssl req -in req.pem -text -noout
将看到证书请求的内容,包括请求者唯一的名字(DN)、公钥信息(可能还有一组扩展的可选属性)。
 
执行签发命令:
openssl ca -in req.pem -out cert.pem -config "$HOME/testca/conf/testca.conf"
执行过程中会要求输入访问CA的私钥密码(刚才设置的888888)。
 
完成上一步后,签发好的证书就是cert.pem,另外$HOME/testca/newcerts里也会有一个相同的证书副本(文件名为证书序列号)。
你可以执行以下语句来查看生成的证书的内容:
openssl x509 -in cert.pem -text –noout

 

Ø        吊销证书(作废证书)
一般由于用户私钥泄露等情况才需要吊销一个未过期的证书。(当然我们用本测试CA时其时很少用到该命令,除非专门用于测试吊销证书的情况)
假设需要被吊销的证书文件为cert.pem,则执行以下命令吊销证书:
openssl ca -revoke cert.pem -config "$HOME/testca/conf/testca.conf"

 

 

 生成证书吊销列表文件(CRL
准备公开被吊销的证书列表时,可以生成证书吊销列表(CRL),执行命令如下:
openssl ca -gencrl -out testca.crl -config "$HOME/testca/conf/testca.conf"
还可以添加-crldays-crlhours参数来说明下一个吊销列表将在多少天后(或多少小时候)发布。
 
可以用以下命令检查testca.crl的内容:
openssl crl -in testca.crl -text -noout

分享到:
评论

相关推荐

    根证书制作成exe文件

    1. 创建根证书:使用工具如OpenSSL,你可以生成一个自签名的根证书。这涉及生成私钥和证书请求,然后使用私钥签署证书请求,形成根证书。 2. 将根证书打包成exe:你需要一个能够将证书文件转换为可执行文件的工具,...

    CA证书制作工具

    在描述中提到的“CA证书制作工具”,可能是一个集成了这些功能的软件,比如OpenSSL命令行工具,或者一些图形化的工具如Certify The Web、Wosign等。这些工具简化了证书的创建和管理流程,对于不熟悉命令行操作的用户...

    CA 证书软件制作

    在这个汉化软件中,用户可以便捷地制作自己的CA自签名证书,这对于个人或小型组织来说是一种经济且实用的解决方案。 首先,了解CA证书的基本概念是必要的。CA证书是公钥基础设施(PKI)的一部分,它为网络上的实体...

    CA证书脚本windows,linux都有

    通过自签名的CA证书,企业可以构建自己的内部信任体系,而不需要依赖外部商业CA。 总之,CA证书脚本在Windows和Linux系统中的使用是实现安全通信的关键步骤。正确配置和管理这些脚本,能够确保组织的数据安全和网络...

    OpenSSL证书管理

    使用`openssl x509`命令,将上一步的请求签名,设置有效期为10000天,使用SHA1散列函数,扩展选项为v3_ca,最终生成根证书(`certs/ca.cer`)。 4. **根证书转换**: 将根证书转换成PKCS12格式(`certs/ca.p12`)...

    openssl实现ssl握手调试工具

    使用OpenSSL,你可以创建一个自签名的根证书(Root CA),如压缩包内的"MiniCA2"和"MiniCA",它们是简单的CA(证书颁发机构)实现。通过以下步骤,你可以创建自己的证书: - 初始化CA私钥和证书请求:`openssl req ...

    深入了解openssl

    配置过程通常包括生成私钥、制作CSR(Certificate Signing Request)、向CA申请证书、安装证书及中间证书,以及更新服务器配置文件以包含这些证书。 **3. OpenSSL的其他应用** OpenSSL不仅仅用于SSL/TLS连接,还...

    2 制作第一张自己的SSL证书.zip

    总结来说,制作第一张自己的SSL证书是一个涉及生成密钥对、创建CSR、自签名证书、配置服务器以及安装验证的过程。虽然自签名证书在测试环境中可以使用,但在生产环境中,建议使用权威CA签发的证书以确保用户的信任和...

    制作数字证书工具 包集合(cert2spc.exe、makecab.exe等)

    对于不熟悉数字证书制作的用户来说,这是一份非常有价值的参考资料,能够帮助他们了解如何正确地创建和使用数字证书。 总的来说,这个工具包集合对于开发人员、系统管理员或者任何需要保证软件安全性的个人来说都是...

    win2003证书服务器的配置与应用·

    在实验中,使用OpenSSL完成证书的制作、申请、发放任务,有助于加深对证书管理和安全通信的理解。 #### 总结 通过以上实验内容的学习,不仅能够深入了解数字证书和PKI的基本概念,还能掌握在Windows Server 2003...

    pfx生成工具及方法

    - 然后,使用`openssl x509 -req -in csr.pem -signkey key.pem -out cert.crt`命令签发自签名证书。 - 最后,通过`openssl pkcs12 -export -out pfx_file.pfx -inkey key.pem -in cert.crt`命令生成PFX文件,会...

    linux-用于快速为本地开发环境生成HTTPS证书的一组脚本

    2. `sign_cert.sh`: 可能用于使用自签发CA(如`openssl x509 -req -days <valid_days> -in cert.csr -signkey privkey.key -out cert.crt`)为证书签名。 3. `install_cert.sh`: 安装生成的证书到系统信任存储,以便...

    https.3.客户端认证1

    为了使客户端认证工作,你需要创建自签名的CA证书、服务器证书和客户端证书。这可以通过`openssl`工具完成: 1. 创建CA私钥和根证书: ```bash openssl genrsa -out ca.key 2048 openssl req -new -x509 -days ...

    mosquitto+gmssl编译,建立国密的MQTT消息通道

    这里我们使用 GMSSL 工具生成 CA(证书颁发机构)密钥、CSR(证书签名请求)、CRT(证书)以及服务器密钥和 CSR。注意,在生成证书时,使用了 SM2P256V1 这种国密算法。这确保了证书遵循国内的加密标准。 总结来说...

    ssl-builder:使用CA制作SSL证书以进行开发

    SSL生成器 创建证书颁发机构,密钥和证书的命令行脚本。 这是基于Jamie Nguyen的《 指南的。... 创建一个由现有密钥签名的新证书 错误的 例子 在/tmp目录中创建新的服务器端CA,密钥和证书文件。 $ node main.js

    PKI实验,数字信封的实现,数字证书模拟

    在实验中,我们将实际操作这些概念,这将涉及到使用特定的工具或软件,比如OpenSSL,来进行密钥对的生成、证书的制作、数字信封的封装与解封等。此外,理解并处理可能出现的错误和异常情况也是实验的重要部分,例如...

Global site tag (gtag.js) - Google Analytics