конфигурация web gRP C + NGINX TLS - PullRequest
0 голосов
/ 01 мая 2020

У меня есть сервер Node gRP C и веб-клиент gRP C (TS с Angular). Я использую Nginx в качестве прокси для облегчения связи между ними.

Я не знаю, как настроить клиент веб-gRP C (TS) с SSL. Я попытался использовать мою текущую конфигурацию Nginx и конфигурацию Node с клиентом Node gRP C (не web gRP C). В этом случае это сработало.

Node js config: 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 - это запись DNS в файле etc / hosts моего сервера, указывающая на собственный адрес сервера.

Nginx config:

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;
    #...
}

Теперь, веб-страница Часть C (Не работает, дает ошибку рукопожатия, нет соответствующей документации, как это сделать, поэтому попытался просмотреть исходный код this и grpcWeb и предположил, что это будет go таким образом): web gRP C TLS config

Это все, что у меня есть сейчас. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 06 мая 2020

Nginx больше не поддерживается активно для grp c -web. Nginx из коробки не понимает запрос grp c -web. Прокси по умолчанию, который поддерживает grp c -web, - Envoy. Вы можете посмотреть, как настроить Envoy с их документацией.

...