nginx使用openssl的证书-泛解析

一、需求分析

我们公司测试环境,域名更换,原来的*.dev.devbao.cn   变为   *.dev.vdai.cn  ,此处的*表示多个二级域名,导致原来为dev.devbao.cn制作的ssl证书无法使用,需要重新生成。想着是内网服务器,仅供内部测试环境用,所以决定自己制作一个泛解析的ssl证书足矣

此处环境:两台服务器,系统:centos7

CA服务器:192.168.1.75   对应的主机名:tianfen.devdai.cn

nginx服务器:192.168.1.10      多个站点:  *.dev.vdai.cn

二、准备证书

一)在CA服务器上操作

0. 前期准备工作

cd ~/
mkdir ssl
cd ssl
mkdir demoCA
cd demoCA
mkdir newcerts
mkdir private
touch index.txt
echo '01' > serial

1. 制件 CA 证书

生成 CA 私钥: ca.key

openssl genrsa -des3 -out ca.key 2048

这样是生成 rsa 私钥,`des3` 算法,openssl 格式,2048 位强度。`ca.key` 是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。另外可以通过以下方法生成没有密码的key:

openssl rsa -in ca.key -out ca_decrypted.key

生成 CA 根证书的公钥 ca.crt:

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

二)在nginx服务器 --------- 制作网站的 https 证书,并用 CA 签名认证

记住:我们是需要为   *.dev.vdai.cn 颁发ssl证书

先生成  的证书私钥 host.pem

openssl genrsa -des3 -out host.pem 1024

无密码的私钥

openssl rsa -in host.pem -out host.key

生成 csr 签名请求

openssl req -new -key host.pem -out host.csr

这里需要输入国家,地区,组织,email等。最重要的是 **common name**,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名一样,比如是test.dev.vdai.cn的话,这里要写 test.dev.vdai.cn,否则会引发浏览器警报,这里可以写为  *.dev.vdai.cn 来做泛域名证书。切记:不能写成*.vdai.cn

到此为止,nginx客户端的证书请求,已经制作好了,把host.csr拷贝到CA服务器

scp  host.csr  192.168.1.75:/root/ssl/demoCA/

最后,切换到CA服务器, CA 证书进行签名

openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in host.csr -out host.crt

这样网站的 https 证书就做完了。

还有一步就是把 ca.crt 的内容追加到 host.crt 后面,因为有些浏览似乎不支持。

cat ca.crt >> host.crt

证书签署完成以后:

1.拷贝host.crt到nginx服务器

nginx 配置

加入配置内容:

例如:test.dev.vdai.cn

server {
	listen 443;
	server_name test.dev.vdai.cn;

	root html;
	index index.html index.htm;

	ssl on;
	ssl_certificate /PATH/TO/host.crt;     ---写host.crt对应的路径
	ssl_certificate_key /PATH/TO/host.key; ---写host.key对应的路径
ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ =404; } }

2.把ca.crt证书导入到浏览器,(选择受信任的根证书颁发机构)
3.测试效果
nginx使用openssl的证书-泛解析
 
上一篇:为什么说 Gumroad 是一家 “失败” 的创业公司?


下一篇:Ajax新玩法fetch API