zoukankan      html  css  js  c++  java
  • Nginx配置客户端SSL双向认证

    对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密。

    但特殊情况下我们也需要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时我们就需要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 。

    CA 与自签名

    CA 是权威机构才能做的,并且如果该机构达不到安全标准就会被浏览器厂商“封杀”,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封杀了。不过这并不影响我们进行双向认证配置,因为我们是自建 CA 的..

    为了方便,我们就在 NGINX 的目录下进行证书相关制作:

    创建相关目录

    #mkdir ssl

    #cd ssl

    制作 CA 私钥

    #openssl genrsa -out ca.key 2048

    制作 CA 根证书(公钥)

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

    服务器端证书

    制作服务端私钥

    #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

    客户端证书

    和服务端证书制作一样。

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

    部分主要配置:

    server{

      ssl on;

      ssl_certificate ssl/server.crt; #server公钥

      ssl_certificate_key ssl/server.key; #server私钥

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

      ssl_verify_client on;

    }

    配置好后就就重新reload nginx。

    请求验证

    1、浏览器验证

    由于是双向认证,直接通过浏览器访问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机构颁布,忽略它既可。
    2、CURL验证
    执行curl命令,带上证书,但是有些问题,貌似是curl本身的问题,这里就不研究了,应为用浏览器已经验证通过。
    相关命令:
    curl -k --cert ssl/client.crt --key client.key https://ip:443
  • 相关阅读:
    selenium
    python第三方模块的安装
    程序员学习网站
    python 数据较大 性能分析
    linux ~/ 和 /
    VMWare虚拟机 window文件传递
    vi命令
    os.system
    win10系统进入BIOS
    pyinstaller将python脚本生成exe
  • 原文地址:https://www.cnblogs.com/chen-dch/p/7591921.html
Copyright © 2011-2022 走看看