Nginx和Webpack-Dev-Server的错误'net :: ERR_CERT_COMMON_NAME_INVALID'

时间:2019-03-16 16:57:50

标签: sockets nginx webpack websocket openssl

我有以下问题。我尝试创建一个.NET Core Web-API和一个Vue-SPA前端。

为此,我将Nginx用作Windows计算机上的服务器。

为此.NET为我生成一个SSL证书。这是在文件夹自己的证书的certmgr中生成的。

要为Nginx生成证书,我导出了此生成的文件,并按照此guid对其进行了转换。

https://blog.knoldus.com/easiest-way-to-setup-ssl-on-nginx-using-pfx-files/

所以我得到了cert.crt和cert.rsa。他们都关闭了,我正在使用Ngnix。对于Web-API,一切正常。但是在前端我总是会收到以下错误

  

sockjs.js?9be2:1605 GET https://192.168.178.145:8081/sockjs-node/info?t=1552754433422 net :: ERR_CERT_COMMON_NAME_INVALID

因此webpack-dev-server无法连接。但我不知道为什么。在这种情况下我做错了什么?

这是我的Nginx配置

server {
        listen       58000 ssl;
        server_name  localhost;

        ssl_certificate      domain.crt;
        ssl_certificate_key  domain.rsa;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            #proxy_buffering    off;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   Host      $host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass https://localhost:8081/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        location /api {
            proxy_pass https://127.0.0.1:5001;
        }
    }

在我的webpack-dev-server中,我正在使用以下

module.exports = {
    devServer: {
      https: {
        key: fs.readFileSync('path\\domain.rsa'),
        cert: fs.readFileSync('path\\domain.crt'),
      }
    }
  }

对我来说,证书似乎有一些问题。但是为什么它只在websocket上失败而不在其他地方失败?

对不起,我是SSL和Nginx的新手。

1 个答案:

答案 0 :(得分:2)

  

sockjs.js?9be2:1605 GET https://192.168.178.145:8081/sockjs-node/info?t=1552754433422 net :: ERR_CERT_COMMON_NAME_INVALID

这表明您使用192.168.178.145作为主机名

    server_name  localhost;

这表明nginx需要localhost作为主机名

    ssl_certificate      domain.crt;

目前尚不清楚您在证书中配置的真实名称,但很有可能不是192.168.178.145。因此就是错误。

    listen       58000 ssl;

这表明您的nginx正在侦听端口5800。错误消息中的URL而是端口8081。这可能表明您显示的nginx配置与实际访问的服务器无关-我已经不知道端口8081上有什么服务器。