NGINX 双认证

Posted 一笑而起

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NGINX 双认证相关的知识,希望对你有一定的参考价值。

先说一下何为双向认证:

        

单项认证,是客户确定客户访问的网站是否正确,且数据加密交互服务端和客户端数据。

双向认证,是①客户确定访问的网站是否正确,证书是否和客户端存储的服务端证书匹配,②服务端也要确定客户是不是我认证的,允许访问的客户。双方都确定后身份正确后,在把数据加密传送。

双向认证一般用于企业之间,对安全要求比较高的情况下。比如目前的区块链互访等都是采用的这种方式。 

单项认证和双向认证的区别可以参考如下截图(图片来源见文章最下方的链接)       


        


证书生成方式:

    1. 私钥:openssl genrsa -aes256 -out server-key.pem 4096

    2. 自签证书:openssl req -new -x509 -days 3650 -key server-key.pem-sha256 -out server-cert.pem

注意,这里“Common Name”应为域名或者提供被访问的ip。和访问方式对应最好。

    3. 客户端的私钥:openssl genrsa -aes256 -out client-key.pem 4096

    4. echo'extendedKeyUsage = clientAuth' > extfile-client.cnf

    openssl req -new-key client-key.pem -out client-cert.csr

        opensslx509 -req -days 3650 -in client-cert.csr -signkey client-key.pem -outclient-cert.pem -extfile extfile-client.cnf

    5. 将生成的server-cert.pem client-cert.pem 双方互换


nginx 证书双认证方式的配置:

       nginx作为服务端的配置:

        ssl    on;
        ssl_certificate      server-cert.pem;
        ssl_certificate_key  server-key.pem;
        ssl_client_certificate client-cert.pem;  #作为服务端,需要认证的是对方的客户端证书
        ssl_verify_client on;   # 开启双向认证
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_verify_depth 1; # 默认为1,设置客户端证书链的检查深度
        ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers  on;


nginx作为反向代理的配置:

        server{

                    listen port;

                    location / {

       proxy_ssl_certificate  client-cert.pem;

       proxy_ssl_certificate_key client-key.pem;

       proxy_ssl_trusted_certificate server-cert.pem;# 对方提供的服务端证书;

       proxy_ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;

       proxy_ssl_verify on;

       proxy_ssl_verify_depth 1;

       proxy_ssl_session_reuse off;

       proxy_ssl_cliphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

       proxy_pass   https://***;

}

}


关于单项认证和双向认证的有关可以看看这篇博文:

http://blog.csdn.net/duanbokan/article/details/50847612

Http和Https的区别/握手协议/单双认证

https://blog.csdn.net/zxysshgood/article/details/79126735



以上是关于NGINX 双认证的主要内容,如果未能解决你的问题,请参考以下文章

什么是双因子认证?堡垒机有哪些双因子认证方式?

Proxmox 双因子认证

使用扫码登录,实现Windows双因素/双因子身份认证

多因子认证是什么意思?与双因子认证有什么区别?

等保等保测评中双因素认证是什么意思?等于双因子认证吗?

等保等保测评中双因素认证是什么意思?等于双因子认证吗?