Nginx的;如何使用OCSP验证SSL客户端证书

时间:2015-12-05 08:21:33

标签: ssl nginx ocsp

我正在使用Nginx来创建安全连接;当我撤销客户端证书时,我也可以通过https连接到Nginx,我知道我应该配置ssl_crl指令,但我想使用OCSP来验证客户端证书,我该怎么办?我发现Nginx使用OpenSSL库来建立ssl连接,我应该用openssl.cnf文件做些什么吗?

4 个答案:

答案 0 :(得分:3)

具有OCSP功能的客户端证书验证已添加到nginx 1.19.0+。 例如:

ssl_verify_client on;
ssl_ocsp on;
resolver 192.0.2.1;

ssl_ocsp 启用客户端证书链的OCSP验证。
ssl_ocsp叶子; 仅启用对客户端证书的验证。默认情况下, ssl_ocsp 设置为关闭。 为使OCSP验证有效,应将 ssl_verify_client指令设置为 on 可选 应该指定 resolver 来解析OCSP响应程序的主机名。

答案 1 :(得分:1)

先决条件:

  • 在配置了OCSP的情况下运行pki

NginX服务器配置

    # Specifies a file with trusted CA certificates in the PEM format used to verify client certificates and OCSP responses if ssl_stapling is enabled.
    # The list of certificates will be sent to clients. If this is not desired, the ssl_trusted_certificate directive can be used. 
    ssl_client_certificate /etc/nginx/client_certs/ca.crt;
    ssl_verify_client on;
    ssl_stapling on; #Yes this has to be configured to use OCSP
    resolver 192.0.2.1;

答案 2 :(得分:0)

Nginx不支持客户端证书的OCSP验证。验证客户端证书的唯一选择是使用CRL,更新它们并重新加载Nginx以应用更改。

在这个帖子中,一位领先的Nginx开发者证实了这一点,并表示截至2014年没有人在开展这项工作: https://forum.nginx.org/read.php?2,238506,245962

答案 3 :(得分:-5)

这只是代码在服务器块中的样子:

 server {

   # Listen on port 443
   listen   443 default_server;
   server_name example.com;

   root /path/to/site-content/;
   index index.html index.htm;

   # Turn on SSL; Specify certificate & keys
   ssl on;
   ssl_certificate /etc/nginx/ssl/example.com/my_certificate.crt;
   ssl_certificate_key /etc/nginx/ssl/example.com/example.key;

   # Enable OCSP Stapling, point to certificate chain
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_trusted_certificate /etc/nginx/ssl/full_chain.pem;

  }

确保证书与您的路径匹配,然后保存您的工作。

在重新加载之前测试您的配置......

最后,通过以下任一命令重启或重新加载Nginx:

sudo service nginx reload

sudo service nginx restart

最后一步,通过此链接测试您的OCSP Stapling以确保您的SSL正常工作:

OCSP Stapling SSL Checker