首先创建一个目录
1
2
3
|
cd /etc/nginx
mkdir ssl
cd ssl
|
CA与自签名
制作CA私钥
1
|
openssl genrsa -out ca.key 2048
|
制作 CA 根证书(公钥)
1
|
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
|
注意:
1、Common Name 可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧
服务器端证书
制作服务器端私钥:
1
2
|
openssl genrsa -out server.pem 1024
openssl rsa - in server.pem -out server.key
|
生成签发请求:
1
|
openssl req -new -key server.pem -out server.csr
|
注意:
1、Common Name 得填写为访问服务时的域名,这里我们用 usb.dev 下面 NGINX 配置会用到
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)
用CA签发
1
|
openssl x509 -req -sha256 - in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
|
客户端证书
与服务端证书类似
注意:
1、Common Name可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)
至此需要的证书都弄好了,我们可以开始配置 NGINX 了。
Nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
server {
listen 443;
server_name usb.dev;
index index.html;
root /data/test/ ;
ssl on;
ssl_certificate /etc/nginx/ssl/server .crt;
ssl_certificate_key /etc/nginx/ssl/server .key;
ssl_client_certificate /etc/nginx/ssl/ca .crt;
ssl_verify_client on;
}
|
请求验证
验证过程可以选择在其他机器或是本机,为了能够解析 usb.dev,还需要配置一下 /etc/hosts:
1
|
ip地址 usb.dev
|
如果用浏览器验证,需要把客户端证书导出成 p12 格式的
1
|
openssl pkcs12 - export -clcerts - in client.crt -inkey client.pem -out client.p12
|
从服务器上将几个证书下载下来,然后安装到可信的证书列表,点击刚才生成的p12文件输入证书的密码将安装至个人列表。
然后关闭浏览器,重新输入域名,会出现ssl双向验证的证书提示。选择证书即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.jianshu.com/p/dda98b8a079f