【问题标题】:How to run a secure shieldsio server locally如何在本地运行安全的 shieldsio 服务器
【发布时间】:2021-10-11 22:42:36
【问题描述】:

我不知道是否可以轻松地做到这一点,而且我还没有找到任何关于如何在本地以安全 (HTTPS) 方式运行 shieldsio 的文档。

我已经按照this 的描述成功部署了一个工作服务器,但它只监听 HTTP。

我想也许我只需要一些小的重新配置就可以安全地工作了,所以 我所做的是修改 config/production.yaml

  public:
    bind:
      address: '0.0.0.0'
      port: 5443

    ssl:
      isSecure: true
      key: 'https.key'
      cert: 'https.crt'

我用来生成秘密的步骤是:

openssl genrsa -out https.key
openssl req -new -key https.key -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey https.key -out https.crt
rm csr.pem

在重建 docker 镜像并再次部署后,服务器开始监听,但在第一次 HTTP GET 之后我收到错误:

  internal/buffer.js:958
      super(bufferOrLength, byteOffset, length);
      ^

  RangeError: Invalid typed array length: -4095
      at new Uint8Array (<anonymous>)
      at new FastBuffer (internal/buffer.js:958:5)
      at Handle.onStreamRead [as onread] (internal/stream_base_commons.js:187:19)
      at Stream.<anonymous> (/usr/src/app/node_modules/spdy/node_modules/handle-thing/lib/handle.js:120:12)
      at Stream.emit (events.js:412:35)
      at Stream.emit (domain.js:475:12)
      at endReadableNT (/usr/src/app/node_modules/readable-stream/lib/_stream_readable.js:1010:12)
      at processTicksAndRejections (internal/process/task_queues.js:82:21)

客户端 curl 命令返回:

  curl -k https://127.0.0.1:5443
  curl: (52) Empty reply from server

有没有人尝试过同样的事情并取得了成功? 也许我遗漏了一些明显的东西,我对nodejs不太熟悉。 感谢您的帮助。

谢谢, 银色燕尾服

【问题讨论】:

    标签: node.js docker https ssl-certificate shields.io


    【解决方案1】:

    如果有人想实现与我相同的目标,感谢盾牌的开发人员,我已经找到了解决此问题的方法。

    您不能使用配置将屏蔽部署为 HTTPS 站点,但您可以部署一个 nginx 代理,将 HTTPS 请求转发到 HTTP 屏蔽服务器。 为此,您需要对 nginx 进行以下配置:

    server {
        listen 443 http2 ssl;
        listen [::]:443 http2 ssl;
        server_name <your_domain_name>;
    
        ssl_certificate /etc/ssl/certs/<your_domain_name>.crt;
        ssl_certificate_key /etc/ssl/private/<your_domain_name>.key;
    
        location / {
            root  /usr/share/nginx/html;
            index index.html index.htm;
    
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
    
            proxy_pass  http://<your_domain_name>:<port_where_shieldsio_listens>;
        }
    
        error_page  500 502 503 504  /50x.html;
        location = /50x.html {
            root  /usr/share/nginx/html;
        }
    }
    

    使用此配置,部署的 nginx 将处理 HTTPS 连接,并且内容仍将由运行中的 shieldsio 服务器提供。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多