【问题标题】:web gRPC + NGINX TLS configuration网页 gRPC + NGINX TLS 配置
【发布时间】:2020-08-15 13:06:34
【问题描述】:

我有一个 Node gRPC 服务器和一个 Web gRPC 客户端(带有 Angular 的 TS)。我使用 Nginx 作为代理来促进它们之间的通信。

我不知道如何使用 SSL 配置 Web gRPC 客户端 (TS)。我尝试将当前的 Nginx 配置和 Node 配置与 Node gRPC 客户端(不是 Web gRPC)一起使用。它在那种情况下有效。

节点 js 配置: Node Js Config

生成证书的脚本:

openssl genrsa -passout pass:1111 -des3 -out ca.key 4096

openssl req -passin pass:1111 -new -x509 -days 365 -key ca.key -out ca.crt -subj  "/C=CL/ST=RM/L=Santiago/O=Test/OU=Test/CN=ca"

openssl genrsa -passout pass:1111 -des3 -out server.key 4096

openssl req -passin pass:1111 -new -key server.key -out server.csr -subj  "/C=CL/ST=RM/L=Santiago/O=Test/OU=Server/CN=dev"

openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

openssl rsa -passin pass:1111 -in server.key -out server.key

openssl genrsa -passout pass:1111 -des3 -out client.key 4096

openssl req -passin pass:1111 -new -key client.key -out client.csr -subj  "/C=CL/ST=RM/L=Santiago/O=Test/OU=Client/CN=dev"

openssl x509 -passin pass:1111 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

openssl rsa -passin pass:1111 -in client.key -out client.key

在上面的代码中,在 CN=dev 中,dev 是我服务器的 etc/hosts 文件中指向服务器自己地址的 DNS 条目。

Nginx 配置:

server {
    listen 10002 ssl http2;
    # listen 10002 http2;
    # include snippets/self-signed.conf;
    #  include snippets/ssl-params.conf;

    ssl_certificate     certs/client.crt;
    ssl_certificate_key certs/client.key;

    if ($request_method = OPTIONS) {
        return 204;
    }

    add_header 'Access-Control-Allow-Origin' "$http_origin" always;
    add_header Access-Control-Max-Age 3600;
    add_header Access-Control-Expose-Headers Content-Length;
    add_header Access-Control-Allow-Headers Range;
    add_header Access-Control-Allow-Headers x-user-agent;
    add_header Access-Control-Allow-Headers x-grpc-web;
    add_header Access-Control-Allow-Headers content-type;

    grpc_ssl_certificate certs/client.crt;
    grpc_ssl_certificate_key certs/client.key;
    grpc_ssl_trusted_certificate certs/ca.crt;
    grpc_ssl_name ace-dev;
    grpc_ssl_server_name on;    

    # location /Forms.Forms/getExistingForms{
    #   grpc_pass grpcs://backend;
    # };

    location / {
         grpc_pass grpcs://192.168.1.59:50051;
    } 
    #ssl_certificate     ssl/cert.pem;
    #ssl_certificate_key ssl/key.pem;
    #...
}

现在,web gRPC 部分(不工作会导致握手错误,没有正确的文档如何做到这一点,所以尝试查看this 和 grpcWeb 源代码并假设它会这样): web gRPC TLS config

这就是我现在所拥有的。任何帮助将不胜感激。

【问题讨论】:

    标签: ssl nginx grpc grpc-node grpc-web


    【解决方案1】:

    grpc-web 不再积极支持 Nginx。开箱即用的 Nginx 不理解 grpc-web 请求。支持 grpc-web 的默认代理是 Envoy。您可以使用他们的文档查看如何配置 Envoy。

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2021-03-07
      相关资源
      最近更新 更多