美文网首页我用 LinuxDevops运维
Nginx+SSL实现双向认证

Nginx+SSL实现双向认证

作者: 别玩游戏知道吗 | 来源:发表于2019-01-15 18:27 被阅读3次

    首先创建一个目录

    cd /etc/nginx
    mkdir ssl
    cd ssl
    

    CA与自签名

    制作CA私钥
    openssl genrsa -out ca.key 2048
    
    制作 CA 根证书(公钥)
    openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
    

    注意:

    1、Common Name 可以随意填写
    2、其他需要填写的信息为了避免有误,都填写 . 吧

    服务器端证书

    制作服务器端私钥:
    openssl genrsa -out server.pem 1024
    openssl rsa -in server.pem -out server.key
    
    生成签发请求:
    openssl req -new -key server.pem -out server.csr
    

    注意:

    1、Common Name 得填写为访问服务时的域名,这里我们用 usb.dev 下面 NGINX 配置会用到
    2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)
    用CA签发
    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配置

    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:
    ip地址 usb.dev
    
    如果用浏览器验证,需要把客户端证书导出成 p12 格式的
    openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
    
    从服务器上将几个证书下载下来,然后安装到可信的证书列表,点击刚才生成的p12文件输入证书的密码将安装至个人列表。
    然后关闭浏览器,重新输入域名,会出现ssl双向验证的证书提示。选择证书即可。

    相关文章

      网友评论

        本文标题:Nginx+SSL实现双向认证

        本文链接:https://www.haomeiwen.com/subject/vbzydqtx.html