Можно ли напрямую выставить сервер за балансировщиком нагрузки L4 с помощью общедоступного сертификата?
Этот сервер находится внутри модуля Kubernetes. Перед ним находится служба балансировки нагрузки TCP, которая создает внешний LB L4.
Моя проблема в том, что трафик TLS не достигает контейнера внутри модуля. Так что, если у вас получилось с подобной конфигурацией, мне было бы интересно узнать.
Обновлять
Я не упомянул, что трафик - это GRPC.
Вот что я сделал: у меня есть домен и соответствующий официальный сертификат. Я хочу защитить соединение grpc.
Я пробовал два подхода:
- с контейнером Google ESP я помещаю сертификат как секрет nginx, передаю его в контейнер, устанавливаю ssl-порт. За ESP в том же модуле стоит мой сервер grpc
В этом случае я получаю такое сообщение на стороне клиента:
D0610 14: 38: 46.246248584 32401 security_handshaker.cc:176] Подтверждение безопасности не удалось: {created: @ 1591792726.246234613, description: Handshake failed, file: ../ deps / grpc / src / core / lib / security / transport / security_handshaker.cc , строка_файла: 291, tsi_code: 10, tsi_error: TSI_PROTOCOL_FAILURE}
Я вижу несколько обменов TLS с WireShark, но без входа в систему, особенно.
- без ESP я помещаю сертификат на свой сервер GRPC. Здесь сервер GRPC выходит из строя примерно так:
ошибка: 1408F10B: подпрограммы SSL: ssl3_get_record: неправильный номер версии
В документации Google ESP я вижу, что Я должен доказать, что домен принадлежит мне, и загрузить сертификат (но где)?
Обновление 2
На сегодняшний день я не вижу доказательств того, что это возможно.
IMO, основная проблема заключается в том, что L4 имеет IP, соответствующий доменному имени сертификата. Следовательно, у подов нет правильного IP-адреса, чтобы доказать, что они могут использовать сертификат, поэтому их запрос к корням отклонен (у меня нет доказательств этого, так как я не могу получить отладочную информацию от nginx в ESP. Я видел запрос с чистым серверным решением GRPC).
CN
, так иsubjectAltName
в сертификате вашего сервера. Он должен соответствовать DNS или IP, используемому клиентами для вызова вашей службы. В противном случае квитирование SSL не удастся. Поскольку вы подозреваете о проблеме с сертификатом, было бы очень ценно, если бы вы могли протестировать с другим сертификатом, даже самоподписанным (я обнаружил, что этот метод для создания сертификата с CN и AltSubName очень прост: security.stackexchange.com/a/159537) - person Will R.O.F.   schedule 17.06.2020