如何在本地主机上运行 nats ws 服务器

时间:2021-03-23 18:33:48

标签: ssl websocket tls1.2 nats.io

我在具有 WS 配置的 localhost 或本地 docker 上有一个 nats 服务器。 Nats 需要 tls 用于 websocket。我创建了一个证书和密钥。但是,在连接时它会抛出错误 TLS handshake error from 127.0.0.1:61732: remote error: tls: unknown certificate authority。我该怎么办?

1 个答案:

答案 0 :(得分:0)

对于测试环境,你需要像这样创建一个 conf 文件:

# ws.conf
websocket {
    # Specify a host and port to listen for websocket connections
    #
    # listen: "host:port"

    # It can also be configured with individual parameters,
    # namely host and port.
    #
    # host: "hostname"
    port: 443

    # For test environments, you can disable the need for TLS
    # by explicitly setting this option to `true`
    #
    no_tls: true
}

我在这里称其为 ws.conf,但您可以随意命名。请注意,我明确地将 no_tls 设置为 true 并且没有通过任何证书。

Docker方式

之后你需要创建一个Dockerfile,因为nats镜像的入口点是nats可执行文件,我们可以这样做:

FROM nats:alpine

COPY ws.conf ws.conf

CMD [ "-c", "ws.conf" ]

注意在 CMD 中我传递了一些参数,让我解释一下:

  • -c 是 nats 服务器的 --config 选项的快捷方式
  • ws.conf 是我们创建的配置文件

现在您可以构建并运行此映像。或者你可以创建一个 docker-compose 来为你做这件事,就像这样:

version: "3.8"

services:
  nats-ws:
    dockerfile: Dockerfile
    ports: 
        - 443:443
        - 4222:4222

独立方式

创建 ws.conf 后,以 docker 方式的参数启动 nats。

nats-server -c path/to/ws.conf

就是这样,如果一切正常,您将在 nats 日志/标准输出中看到此消息:

[1] 2021/04/25 18:29:52.854288 [INF] Starting nats-server
[1] 2021/04/25 18:29:52.854402 [INF] Version: 2.2.2
[1] 2021/04/25 18:29:52.854407 [INF] Git: [a5f3aab]
[1] 2021/04/25 18:29:52.854411 [INF] Name: NCXFZRJ6L2PYQM6DND5YRKZA5OMQBQTFGH7ATZULU3US7KBWQDU4RKE3
[1] 2021/04/25 18:29:52.854416 [INF] ID: NCXFZRJ6L2PYQM6DND5YRKZA5OMQBQTFGH7ATZULU3US7KBWQDU4RKE3
[1] 2021/04/25 18:29:52.854421 [INF] Using configuration file: ws.conf
[1] 2021/04/25 18:29:52.858602 [INF] Listening for websocket clients on ws://0.0.0.0:443
[1] 2021/04/25 18:29:52.858643 [WRN] Websocket not configured with TLS. DO NOT USE IN PRODUCTION!
[1] 2021/04/25 18:29:52.859209 [INF] Listening for client connections on 0.0.0.0:4222
[1] 2021/04/25 18:29:52.859696 [INF] Server is ready

参考