OpenSSL可以使用在Windows上,也可以在Linux下面使用,这次准备拿Linux开刀,于是找了RedHat 9.0安装,然后安装自带的OpenSSL组件,rpm一下而已,很简单,安装完成之后,就可以开始下面的工作了:
一、先建立OpenSSL的基本环境,为了达到最简单的效果,就不对OpenSSL的配置文件作出任何改动,准备工作如下:
1、在当前所在的目录下(随便什么目录,想在什么目录下开展工作都可以,自己记得就是)建立一个目录 demoCA
2、进入这个目录:cd demoCA/
3、建立空文件 index.txt 用来保存以后的证书信息,这是OpenSSL的证书数据库:
touch index.txt
4、建立一个文件 serial 在文件中输入一个数字,做为以后颁发证书的序列号,以后颁发的证书序列号就从你输入的数字开始:
echo 01 > serial
二、准备工作完成后,开始建立我们的CA。
1、首先建立一个CA的根私钥文件,使用RSA格式,1024位:
openssl genrsa -des3 -out ca.key 1024 (这样建立的私钥在建立时需要输入一个密码用来保护私钥文件,私钥文件使用3DES加密)
当然也可以不进行加密,这样不安全,但比较简单:
openssl genrsa -out ca.key 1024 (1024表示建立1024位的私钥,目前来说足够了)
2、利用建立的RSA私钥,为CA自己建立一个自签名的证书文件:
openssl req -new -x509 -days 7300 -key ca.key -out ca.crt (建立一个可以使用20年的CA根证书,生成证书的过程中需要输入证书的信息,比如国家等)
三、颁发客户的证书:
1、首先生成客户证书的私钥文件,与生成CA根证书文件的方法一样,这里我生成需要密码保护的私钥:
openssl genrsa -des3 -out client.key 1024
2、OpenSSL生成客户端证书的时候,不能直接生成证书,而是必须通过证书请求文件来生成,因此现在我们来建立客户端的证书请求文件,生成的过程中一样要输入客户端的信息:
openssl req -new -key client.key -out client-req.csr
3、有了证书请求文件之后,就可以使用CA的根证书、根私钥来对请求文件进行签名,生成客户端证书 client-key.pem 了:
openssl x509 -req -in client-req.csr -out client.crt -signkey client-key.pem -CA ca.crt -CAkey ca.key -days 365 -CAserial serial
到这里为止,根CA为客户端签发证书的过程就结束了。
四、撤销已签发的证书:
1、吊销已签发的证书可以使用ca中的 -revoke 命令:
openssl ca -revoke client-key.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
***原文来源***
http://huaiyong198608.blog.163.com/blog/static/34734179201002511642298/?latestBlog