当前位置: 首页 > 知识库问答 >
问题:

Nginx websockets+SSL不起作用(NET::ERR_CERT_COMMON_NAME_INVALID)

伯茂才
2023-03-14
upstream websocket {
    server xx.xx.xx.xx:8080;
}

server {
    listen 80;
    listen [::]:80;
    server_name domain.com *.domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name domain.com *.domain.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

    location /ws {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
    }

}

(索引):2到“wss://xx.xx.xx.xx.xx/ws:8080”的WebSocket连接失败:连接建立错误:NET::err_cert_common_name_invalid

我想这与证书(SSL)有关,但我真的不知道如何解决这个问题!

提前感谢!

<script>
    var conn = new WebSocket('wss://xx.xx.xx.xx/ws');
    conn.onopen = function(e) {
    console.log("Connection established!");
};
</script>

当我将xx.xx.xx.xx更改为domain.com时,我会得到一个握手错误代码504。

顺便说一句,我正在通过php(php server.php)使用ratchet运行一个websocket服务器,下面的示例如下:http://socketo.me/docs/hello-world

共有1个答案

花永昌
2023-03-14

为上游Nginx配置SSL

先决条件

  1. NGINX Plus R6及更高版本或最新的NGINX开源,使用--with-streamwith-stream_ssl_module配置参数编译
  2. 代理TCP服务器或TCP服务器的上游组
  3. SSL证书和私钥
stream {
        upstream websocket {
             server backend1.example.com:8080;

    }

    server {
        listen                8080 ssl;
        proxy_pass            websocket;

        ssl_certificate       /etc/ssl/certs/server.crt;
        ssl_certificate_key   /etc/ssl/certs/server.key;
        ssl_protocols         SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers           HIGH:!aNULL:!MD5;
        ssl_session_cache     shared:SSL:20m;
        ssl_session_timeout   4h;
        ssl_handshake_timeout 30s;
    …
     }
}
 类似资料:
  • 我有以下方法:1使用“SHQueryRecycleBin”查询回收站 但是,当我试图在. Net Core 3.1“SHQueryRecyclbin”上使用相同的代码时,简单地拒绝工作 检查一下,我在{. Net 4.8}vs{. Net Core 3.1}控制台、Winform上试过了 代码示例:

  • 我有一个 Azure 函数应用,它在过去几周内工作正常,但自定义域上的 SSL 绑定已停止工作。SSL未过期或类似的东西。 错误响应为: 门户在Azure Functions设置下正确显示绑定。这也是消费计划上的一个Azure功能。 我已经初始化了一个支持,但没有解决这个问题的运气。

  • 不是我的安全泪珠是这样的: 我现在导入证书: 然后我重新启动KeyCloak: 编辑: 这是我记录的错误: ])-故障说明:{“WFLYCTL0080:失败的服务“=>{”org.wildfly.core.management.security.realm.undertowrealm.key-manager“=>”WFlyDM0018:无法启动服务,原因是:UnrecoverableKeyExce

  • 因此,我在一个控制器中有一个非常简单的代码片段,在这个代码片段中,我使用从外部文件中获取数据,它工作得很好!但是当我使用时,我会在控制台中得到一个

  • 问题内容: 正则表达式似乎还可以,因为第一行将子字符串正确替换为“ helloworld”,但是后者却不匹配,因为我看不到“ whynothelloworld?”。在控制台上 问题答案: 期望 整个 字符串匹配,而不仅仅是子字符串。 使用正则表达式匹配器对象的方法代替:

  • 问题内容: 我的 活动无法正常进行。 以下是我一一尝试过的代码段,但无济于事: 使用方法实施 设定方法 使用方法 这是我完整的MainActivity.java文件: 问题答案: 我遇到了同样的问题,我发现Android非常注重布局XML。我将NavigationView作为DrawerLayout的第一个孩子,但是出于某些愚蠢的原因,它必须是最后一个孩子。因此,您的布局必须具有以下顺序的元素: