一、准备工作如下:
1、在当前所在的目录下建立一个目录 mkdir demoCA
2、进入这个目录:cd demoCA/
3、建立空文件 index.txt 用来保存以后的证书信息,这是OpenSSL的证书数据库:touch index.txt
4、建立一个文件 serial 在文件中输入一个数字,做为以后颁发证书的序列号,以后颁发的证书序列号就从你输入的数字开始:
echo 100001 > serial
二、建立我们的CA根证书。
1、首先建立一个CA的根私钥文件,使用RSA格式,2048位:
openssl genrsa -des3 -out ca.key 2048
2、为CA自己建立一个自签名的证书文件:
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..confopenssl.cnf
三、颁发客户的证书:
1、首先生成客户证书的私钥文件,与生成CA根证书文件的方法一样,这里我生成不需要密码保护的私钥:
openssl genrsa -des3 -out client.key 2048
2、生成证书请求文件csr:
openssl req -new -key client.key -out client.csr -config ..confopenssl.cnf
PEM生成:
openssl req -new -out client.csr -config ..confopenssl.cnf
openssl rsa -in privkey.pem -out client.key
3、有了证书请求文件之后,就可以使用CA的根证书、根私钥来对请求文件进行签名,生成客户端证书 client.pem 了:
openssl x509 -req -in client.csr -out client.crt -signkey privkey.pem -CA ca.crt -CAkey ca.key -days 365 -CAserial serial
到这里为止,根CA为客户端签发证书的过程就结束了。
四、撤销已签发的证书:
1、吊销已签发的证书可以使用ca中的 -revoke 命令:
openssl ca -revoke client.pem -keyfile ca.key -cert ca.crt
这里可能会有一个问题,因为默认的情况下index.txt文件应该放在demoCA文件夹下面,因此需要在这里建立一个demoCA文件夹并建立一个index.txt文件,就可以了
2、证书被吊销之后,还需要发布新的CRL文件:
openssl ca -gencrl -out ca.crl -keyfile ca.key -cert ca.crt