我正在尝试在nginx服务器和客户端(浏览器/邮递员)之间建立2向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;


}


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

谢谢。

最佳答案

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

如果您对客户端证书使用自签名证书颁发机构,则过程将如下所示:


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

openssl req -newkey rsa:2048 -nodes -keyout user.key -out user.req

使用步骤1中的CA对步骤2中的请求进行签名,以为客户端生成证书。请参阅上面的OpenSSL CA(1)。
将步骤3中的证书转换为PKCS#12格式的文件,以便客户端可以导入。例如:

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

关于ssl - 可以针对浏览器(作为客户端)测试双向SSL吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42345170/

10-16 13:47