一、安装OpenSSL
apt-get install openssl -y
二、创建CA所需的目录结构以及文件
mkdir /root/ca/{certs,newcerts,crl,private,requests}
cd /root/ca
touch index.txt
echo "1234" > serial
三、创建根私钥
openssl genrsa -aes256 -out ./private/cakey.pem 2048
PS:AES256是一种加密方式,代表该私钥使用该加密方式及进行保护(可选)
四、创建自签名证书
openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem -days 3650
现在我们的目录结构里面应该会多了两个文件他们分别是:
./private/cakey.pem 根私钥
./cacert.pem 根证书
附加可选(权限设置):
chmod 600 -R /root/ca
目前为止我们的CA根证书颁发机构就完成了,接下来我们要使用根私钥来对证书请求进行签发
五、修改默认的openssl.cnf配置文件
vim /usr/lib/ssl/openssl.cnf
修改项:
dir = /root/ca
[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
六、创建客户端私钥
cd ./requests
openssl genrsa -aes256 -out webserver.key 2048
七、创建证书签发请求文件
openssl req -new -key webserver.key -out webserver.csr
八、使用根证书对请求文件进行签发
我在这里请求文件和根证书都在一台机器上做的测试,如果请求文件在另一台机器上面的话通过scp或者是别的方拷贝到根证书服务器上面
openssl ca -in /root/ca/requests/webserver.csr -out /root/ca/request/webserver.crt
webserver.crt就是通过根证书签发完成后的证书文件
为了调取方便,我们现在将用到的文件统一放到一个目录里为了方便我们以后使用:
mkdir /cacerts
cp /root/private/requests/webserver.key /cacerts/
cp /root/private/requests/webserver.crt /cacerts/
那么现在可用的文件就是:
webserver.crt //签发完成的证书
webserver.key //客户端私钥
cacert.pem //根证书(来自证书颁发机构)
openssl x509 -in webserver.crt -noout -text 查看证书信息
PS:如果Windows导入根证书的话PEM是不能识别的,所以需先将PEM文件后缀更改为crt即可
OK,现在证书文件就可以拿去使用了!!!!例如Apache2、Nginx......
作者:济南市技师学院-怀旭
原文地址:https://blog.51cto.com/13779637/2425003