CloudFlare DNS SSL 客户端证书认证

CloudFlare DNS SSL 客户端证书认证

我有一个安装了客户端证书认证并且运行良好的 Nginx 服务器,下面是我写的在 Nginx 上配置 SSL 的部分。

server {
        listen   80;
        listen   443;
        ssl on;
        server_name ssl-api.mywebsite.com;

        ssl_certificate      /etc/nginx/certs/verify-ssl-api-server.crt;
        ssl_certificate_key  /etc/nginx/certs/verify-ssl-api-server.key;
        ssl_client_certificate /etc/nginx/certs/verify-ssl-api-rootCa.crt;
        ssl_verify_client on;

当我使用浏览器访问该页面时,会出现如下图所示的错误消息。

在此处输入图片描述

我将客户端证书添加到 Firefox 并提供密码以导入 clientcert.p12

在此处输入图片描述

出现一个确认对话框,我只需单击“确定”,一切就可以正常工作。

在此处输入图片描述

现在我想在 CLoudFlare 的 SSL 上实现这个功能,但我不知道该怎么做。我一直在尝试经过身份验证的 Origin Pulls但它不需要发送客户端证书,那么我如何使用 CloudFlare 做到这一点?

答案1

尝试以下操作。在您的 listen 443 行中,您没有说 ssl,我不知道它是否会默认这样做。除非您的 Nginx 版本支持它,否则您不应该将 http2 放在那里。

listen 443 ssl http2;

ssl_certificate /var/lib/certs/fullchain;
ssl_certificate_key /var/lib/certs/privkey;

# Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2
# Change according to your needs
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

# This is a cache for SSL connections, it's optional but helps performance.
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 60m;

在 Chrome、Firefox 和 IE 中正确运行。您可能需要添加中间证书才能使 Firefox 正常运行,因为它比较麻烦。完成此操作后,CloudFlare 应该“正常工作”。

尝试一下并发布您的结果、成功或后续问题。

相关内容