简介:
https 握手的过程,证书的颁发,下面一一讲来。
原理如下图,服务器与客户端的证书都是对等的
证书生成步骤:
第一步:
服务器生成自己的CA主证书
第二步:
生成服务器端证书
第三步:
用服务器生成的CA主证书,给服务器证书签证
第四步:(如果客户端是另外一台服务器,也需要)
把CA 证书放到OS的证书库里面
具体实现:
生成根密钥:
cd /etc/pki/CA/
touch ./{serial,index.txt}
echo "00" > serial
openssl genrsa -out private/cakey.pem 2048
生成主证书:
openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
生成nginx key与证书:
cd /etc/ssl/
openssl genrsa -out nginx.key 2048
openssl req -new -key nginx.key -out nginx.csr
用主证书签发生成nginx 证书
openssl ca -in nginx.csr -days 3650 -out nginx.crt
cp /etc/pki/tls/certs/ca-bundle.crt{,.bak}
cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt #因为是自签的证书,此步骤的意义在于让系统接受该证书
快速给nginx/apache生成证书:
1.openssl
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
tar xzf openssl-1.0*.tar.gz
cd openssl*
./config --prefix=/usr/local/openssl
make && make install
2.创建主证书
mkdir /usr/local/nginx/conf/ssl
cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/nginx/conf/ssl
./CA.sh -newca //建立主证书 安装成功的话,会在ssl目录下面产生一个文件夹demoCA
3.生成服务器私钥和服务器证书
openssl genrsa -des3 -out server.key 1024
//产生服务器私钥
openssl req -new -key server.key -out server.csr
//生成服务器证书
cp server.csr newseq.pem
./CA.sh -sign //为服务器证书签名
cp newcert.pem server.crt
4.,产生客户端证书(选 做)
生成客户私钥:
openssl genrsa -des3 -out client.key 1024
生成客户证书
openssl req -new -key client.key -out client.csr
签证:
openssl ca -in client.csr -out client.crt
转换成pkcs12格式,为客户端安装所用
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
这一步根安装服务器的证书差不多,不同的是签证,最后安装的时候,client.pfx的密码要记住,在客户端安装的时候要用到的。
[root@BlackGhost ssl]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
Enter pass phrase for client.key:
Enter Export Password:
Verifying - Enter Export Password:
客户端和服务器端都可以使用服务器端证书,所以这一步不做也行。
5.集中所以证书和私私钥到一起
#cp demoCA/cacert.pem cacert.pem
同时复制一份证书,更名为ca.crt
#cp cacert.pem ca.crt
6.apache/ngnix 配置
7.安装客户端证书
把ca.crt和client.pfx copy到客户端,双击client.pfx就会进入证书的安装向导,下一步就行了,中间会让你输入密码
参考资料: