使用Nginx配置客户端实现SSL双向认证

一、Nginx配置客户端SSL双向认证

1. CA 与自签名
创建相关目录
#mkdir ssl

#cd ssl
制作 CA 私钥
#openssl genrsa -out ca.key 2048
制作 CA 根证书(公钥)
#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
2. 服务器端证书
制作服务端私钥
#openssl genrsa -out server.pem 1024

#openssl rsa -in server.pem -out server.key
生成签发请求
#openssl req -new -key server.pem -out server.csr
用 CA 签发
#openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
3. 客户端证书

和服务端证书制作一样

4. 配置nginx的nginx.conf文件

至此需要的证书都弄好了,现在开始配置Nginx。

部分主要配置:

server{
    listen       80 ssl;
    server_name  x.x.x.x;
    
  ssl_certificate ssl/server.crt; #server公钥

  ssl_certificate_key ssl/server.key; #server私钥

  ssl_client_certificate ssl/ca.crt; #根级证书公钥,用于验证各个二级client

  ssl_verify_client on;

}

server {
   listen 80;
   server_name x.x.x.x;
   location / {
   proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_pass http://x.x.x.x:8080;
   }
}

配置好后就就重新reload nginx。

5. 请求验证
浏览器验证

由于是双向认证,直接通过浏览器访问https地址是被告知400 Bad Request(No required SSL certificate was sent)的,需要在本机安装client证书。
windows上安装的证书需要pfx格式,也叫p12格式,生成方式如下:

openssl pkcs12 -export -inkey ssl/client.key -in ssl/client.crt -out ssl/client.pfx   #执行后会提示输入密码(用于安装使用的)

然后考到windows中双击即可进行安装,安装时会提示输入生成证书时设置的密码。
安装成功后,重启浏览器输入网址访问,浏览器可能会提示你选择证书,选择刚才安装的那个证书即可。
此时有些浏览器会提示用户该证书不受信任,地址不安全之类,这是因为我们的server证书是我们自己颁发的,而非真正的权威CA机构颁布,忽略它既可。

6. 验证

当输入的路径为https://x.x.x.x:80 并且信任证书访问nginx的首页成功则说明配置成功!

注:文中的所有路径都是对应的自己所创建的证书所在的路径(SslKey里的路径以及alias和passwd),本文所用的nginx版本为1.15.2,JDK版本为1.8.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值