我已经在startssl.com上注册,因此为我的域名修复了4个文件:
删除密码我做了:
openssl rsa -in ssl.key -out ssl.key.nopwd
然后,我build立了我的nginxconfiguration:
server { listen 443 ssl; ssl on; ssl_certificate /etc/nginx/ssl/ssl.crt; ssl_certificate_key /etc/nginx/ssl/ssl.key.nopwd; keepalive_timeout 70; fastcgi_param SSL_VERIFIED $ssl_client_verify; fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial; fastcgi_param SSL_CLIENT_CERT $ssl_client_cert; fastcgi_param SSL_DN $ssl_client_s_dn; server_name ***; root /var/www/***; }
在nginx重新启动后,我可以通过https成功进入我的网站。 但是现在我想保护我的网站,并且只能通过安装在客户端浏览器中的证书来访问它。 据我所知,我必须安装在nginxconfiguration:
ssl_client_certificate etc/nginx/ssl/[WHAT_SHOULD_BE_HERE?] ssl_verify_client on;
但是,我应该指出什么文件? 我怎样才能从服务器生成一个客户端证书?
请看看这个答案 。 但是这里是需要发生的简短的版本:
ssl.crt原样使用ssl.crt是不够的,您应该将ssl.crt +中间CA(s)+根CA(按此顺序)连接成单个文件,并在ssl_certificate语句中使用此文件。
您需要将CLIENT证书的Intermediate CA(s)+ Root CA整合到单个文件中,并将其添加到ssl_client_cerificate语句中。
可选但强烈build议,通过分析$ssl_client_s_dnvariables来设置规则要求的客户端证书主题名称(即CN,O,OU,DC等)。
强烈build议通过将SERVER的 Intermediate CA(s)+ Root CA组合并将其添加到ssl_trusted_certificate语句来启用OSCP装订,如下所示:
ssl_trusted_certificate /etc/nginx/ssl/ocsp-chain.crt; ssl_stapling on; ssl_stapling_verify on;
您可能还想将证书信息传递给您的fastcgi模块:
... fastcgi_param VERIFIED $ssl_client_verify; fastcgi_param DN $ssl_client_s_dn; ...