Nginx 400 SSL握手

时间:2014-11-12 14:54:10

标签: ssl nginx

我正在使用nginx,我最近在网站上添加了证书,我得到了一个奇怪的错误。

以下是我的access.log的一部分:

x.y.z.w - - [12/Nov/2014:15:16:09 +0100]  "-" 400 0 "-" "-" Host : -
x.y.z.w - - [12/Nov/2014:15:16:09 +0100]  "-" 400 0 "-" "-" Host : -

我在error.log中看不到任何内容但是当我强制error.log更精确时,我得到了:

2014/11/12 15:16:09 [info] 16027#0: *24870 client closed prematurely connection while SSL handshaking, client: x.y.z.w, server: sub.domain.com
2014/11/12 15:16:09 [info] 16027#0: *24871 client closed prematurely connection while SSL handshaking, client: x.y.z.w, server: sub.domain.com

这是我的nginx配置文件的一部分:

server
{
        listen 80;

        server_name sub.domain.com;
        root /var/www;
        rewrite ^ https://$server_name$request_uri? permanent;
}


server
{
        listen 443 ssl;

        server_name sub.domain.com;
        root /var/www;

        ssl_certificate /var/server.crt;
        ssl_certificate_key /var/server.key;
        ...

客户端没有错误。

这是正常的吗?它来自哪里?

2 个答案:

答案 0 :(得分:0)

  

这是正常的吗?它来自哪里?

它可能来自在完成握手之前关闭的客户端。如果他们在握手中获得证书,无法验证证书,因为它是自签名的或其他原因,可能就是这种情况,并且必须与用户核实是否应该继续。

答案 1 :(得分:0)

假设您使用的是nginx默认访问日志格式,这意味着握手已已完成,但客户端之后未发送任何有效请求(HTTP 400代码 - >无效请求)。

例如,这可能是由于某些SSL扫描程序(考虑到当前上下文,这并不奇怪)。