一、把证书准备好
1、制作CA证书:
ca.key CA私钥:
openssl genrsa -des3 -out ca.key 2048
制作解密后的CA私钥(一般无此必要):
openssl rsa -in ca.key -out ca_decrypted.key
ca.crt CA根证书(公钥):
openssl req -new -x509 -days 7305 -key ca.key -out ca.crt
2、制作生成网站的证书并用CA签名认证
在这里,假设网站域名为harbor.wangxianfeng.cn
生成harbor.wangxianfeng.cn证书私钥:
openssl genrsa -des3 -out harbor.wangxianfeng.cn.pem 1024
制作解密后的harbor.wangxianfeng.cn证书私钥:
openssl rsa -in harbor.wangxianfeng.cn.pem -out harbor.wangxianfeng.cn.key
生成签名请求:
openssl req -new -key harbor.wangxianfeng.cn.pem -out harbor.wangxianfeng.cn.csr
在common name中填入网站域名,如harbor.wangxianfeng.cn即可生成改站点的证书,同时也可以使用泛域名如*.wangxianfeng.cn来生成所有二级域名可用的网站证书。
用CA进行签名:
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in harbor.wangxianfeng.cn.csr -out harbor.wangxianfeng.cn.crt
其中,policy参数允许签名的CA和网站证书可以有不同的国家、地名等信息,days参数则是签名时限。
如果在执行签名命令时,出现“I am unable to access the ../../CA/newcerts directory”
修改/etc/pki/tls/openssl.cnf中“dir = ./CA”
然后:
mkdir -p CA/newcerts
touch CA/index.txt
touch CA/serial
echo "01" > CA/serial
再重新执行签名命令。
最后,把ca.crt的内容粘贴到harbor.wangxianfeng.cn.crt后面。这个比较重要!因为不这样做,可能会有某些浏览器不支持。
好了,现在https需要到的网站私钥harbor.wangxianfeng.cn.key和网站证书harbor.wangxianfeng.cn.crt都准备完毕。
接下来开始配置服务端
配置nginx
新开一个虚拟主机,并在server{}段中设置:
listen 443;
ssl on;
ssl_certificate /path/to/harbor.wangxianfeng.cn.crt;
ssl_certificate_key /path/to/harbor.wangxianfeng.cn.key;
其中的路径是刚刚生成的网站证书的路径。
然后使用一下命令检测配置和重新加载nginx:
检测配置:
nginx -t
重新加载:
nginx -s reload
文章评论