可以针对浏览器(作为客户端)测试双向SSL吗?

时间:2017-02-20 12:56:14

标签: ssl nginx

我正在尝试在nginx服务器和客户端(浏览器/邮递员)之间建立双向SSL连接。 我想知道是否应该可以告诉nginx信任浏览器/邮递员的密钥,假设nginx请求并验证客户端的证书。 具体来说,应该放在nginx的那一部分

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/nginx/ssl/newcert.crt;
    ssl_certificate_key /etc/nginx/ssl/newkey.pem;


    ssl_session_timeout 15m;
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    ssl_verify_client on;
    ssl_verify_depth 2;

    # what should be the content of that file??
   >>>>>> ssl_client_certificate /etc/nginx/ssl/trust/client.crt;


}

我没有找到任何有关此事的信息......

感谢。

1 个答案:

答案 0 :(得分:0)

ssl_client_certificate指令指向包含用于签署客户端证书请求证书颁发机构的文件。有关详细信息,请参阅this document

如果您使用自签名证书颁发机构作为客户端证书,则过程如下:

  1. 创建自签名证书以用作证书颁发机构。有关管理此步骤的简化方案,请参阅OpenSSL CA(1)
  2. 为客户端生成证书请求。例如:

    openssl req -newkey rsa:2048 -nodes -keyout user.key -out user.req
    
  3. 使用步骤1中的CA对步骤2中的请求进行签名,以便为客户端生成证书。请参阅上面的OpenSSL CA(1)。

  4. 将步骤3中的证书转换为PKCS#12格式的文件,以便客户端可以导入该文件。例如:

    cat user.key user.crt | openssl pkcs12 -export -out user.p12