CentOS6系统openssl生成证书和自签证书的过程,记录一下,本文基于CentOS 6 64bit。
$ yum install openssl openssl-devel
1,生成服务器端的私钥(key文件)
$ openssl genrsa -des3 -out server.key 1024
此时会提示输入密码(PEM pass phrase,必须输入),此密码用于加密key文件(参数des3便是指加密算法)。
以后每当需读取此文件(通过openssl提供的命令或API)都需输入密码(PEM pass phrase)。例如把key文件引入Nginx等第三方软件配置https,在启动Nginx的时候同样会要求输入密码。
如果觉得不方便,也可以去除这个密码,但一定要采取其他的保护措施
去除key文件的密码:openssl rsa -in server.key -out server.key
2,生成Certificate Signing Request(CSR)
$ openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
生成的csr文件交给CA签名后形成服务端自己的证书。屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可
Country Name (2 letter code) [XX]:CN #国家,随便填
State or Province Name (full name) []:GD
Locality Name (eg, city) [Default City]:GZ
Organization Name (eg, company) [Default Company Ltd]:SZuniversity
Organizational Unit Name (eg, section) []:SZunivertiy
Common Name (eg, your name or your server's hostname) []:xxx #这个重要!!
Email Address []:aaa@163.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #不填
An optional company name []: #不填
3,对客户端也作同样的命令生成key及csr文件
$ openssl genrsa -des3 -out client.key 1024 #如果服务端去掉了密码,这里也要去掉
$ openssl req -new -key client.key -out client.csr -config /etc/pki/tls/openssl.cnf
4,生成CA文件
CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证(需要收费),这里我们自己制作一个CA
$ openssl req -new -x509 -keyout ca.key -out ca.crt -config /etc/pki/tls/openssl.cnf
5,用生成的CA的证书为刚才生成的server.csr和client.csr文件签名
$ touch /etc/pki/CA/index.txt
$ echo "00" > /etc/pki/CA/serial
$ openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
$ openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf
client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key
.crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了)
可能出现的错误:
1,执行第5步使用CA证书为csr文件签名的时候,提示
failed to update database
TXT_DB error number 2
解决办法:
$ rm -rf /etc/pki/CA/index.txt
$ touch /etc/pki/CA/index.txt