1.介绍
为了搭建https的测试环境,还是别用自己的正式证书了,想自己当把CA,颁发一些证书,自己当根。网上看了一些文章,都是当前目录建立一个demoCA这样的东西,但使用openssl ca 命令的时候,总是各种访问默认目录/etc/pki什么的,所以hi是放弃幻想了。直接用系统的目录做事情吧。
先看一下这个目录的结构吧
[root@cq01-bce-48-29-31.cq01.baidu.com httpsec]# tree /etc/pki/CA
/etc/pki/CA
|-- certs
|-- crl
|-- newcerts
`-- private
4 directories, 0 files
2.步骤
2.1.生成私钥
进入CA目录,生成我们的一个私钥:
cd /etc/pki/CA
openssl genrsa -out private/cakey.pem 2048
大家可能问,公钥跑哪里去了,实际上生成的私钥里既有私钥,也有一些基础信息,用于将来生成公钥
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}
2.2.生成根证书
生成根证书有两种方式,一种是直接生成字签名根证书,一种是先生成根证书的请求文件csr,然后自己跟自己颁根证书
方法一
openssl req -new -days 3650 -x509 -key ./private/cakey.pem -out cacert.pem
方法二
openssl req -new -key ./private/cakey.pem -out rootca.csr
openssl req -x509 -days 3650 -key ./private/cakey.pem -in rootca.csr -out cacert.pem
我们可以看下证书的内容
openssl x509 -in rootca.crt -noout -text
2.4.给别人签发证书
自己当了CA后,就可以给别人签发证书了。客户自己生成一个证书请求,给CA,CA就可以生成证书了
在客户机执行如下操作
1.生成私钥
openssl genrsa -out client1_key.pem 2048
openssl req -new -key client1_key.pem -out client1.csr
最后就是关键的 一步,签发证书,表示CA对证书申请者的认同。
openssl ca -in client1.csr -out client1.pem
中间可能会提示index.txt文件和serial文件,按他的要求有这个两个文件即可,也可以一开始的时候就初始化好
touch /etc/pki/CA/index.txt
echo xyz > /etc/pki/CA/serial
好了,搞定!
期间需要注意的是,root CA的证书申请时候的Country,State,Comm那几个字段要一致,否则签发不了证书。可以自己试试。
补一个,证书导出公钥
openssl x509 -inform PEM -in client1.pem -outform PEM -pubkey -noout