Я решил свою проблему.
В моем случае взаимный TLS был включен на gourouter:
По умолчанию Gorouter запрашивает, но не требует клиентских сертификатов при рукопожатиях TLS.
https://docs.cloudfoundry.org/adminguide/securing-traffic.html#gorouter_mutual_auth
Проверка, включен ли mTLS
1. Ведение событий в SCHANNEL
Добавить раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
EventLogging REG_DWORD = 3
https://blogs.technet.microsoft.com/kevinjustin/2017/11/08/schannel-event-logging/
Теперь вы должны найти журналы событий, которые сервер запрашивает у клиента, но его невозможно найти.
2. curl
Посмотрите на жирные линии:
curl -I -v -H "Connection: close" https://your-app.cloud
- О подключении () к порту 443 your-app.cloud (# 0)
- Подключен к порту your-app.cloud 443 (# 0)
- Инициализация NSS с помощью certpath: sql: / etc / pki / nssdb
- CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: нет
- NSS: сертификат клиента не найден (псевдоним не указан)
- SSL-соединение с использованием TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
3. openssl
Посмотрите на жирные линии:
openssl s_client -connect your-app.cloud:443 -state
- CONNECTED (00000003)
- SSL_connect: до / подключить инициализацию
- SSL_connect: клиент записи SSLv2 / v3 привет A
- SSL_connect: сервер чтения SSLv3 привет A
- ...
- подтвердить возврат: 1
- SSL_connect: SSLv3 считывает сертификат сервера A
- SSL_connect: обмен ключами сервера чтения SSLv3 A
- SSL_connect: запрос сертификата сервера чтения SSLv3 A
- SSL_connect: сервер чтения SSLv3 выполнен A
- SSL_connect: SSLv3 пишет клиентский сертификат A
- SSL_connect: обмен ключами клиента записи SSLv3 A
- SSL_connect: спецификация шифра изменения записи SSLv3 A
- SSL_connect: запись SSLv3 завершена A
- SSL_connect: сброс данных SSLv3
- SSL_connect: билет сеанса чтения SSLv3-сервера A
- SSL_connect: чтение SSLv3 завершено A
Отключить Gorouter mTLS
Измените свойства Gorouter с помощью манифеста развертывания CF:
- name: router
- name: gorouter
release: routing
properties:
router:
forwarded_client_cert: always_forward
client_cert_validation: none
Теперь вы можете проверить, включен ли снова mTLS.
Обратите внимание, что эти настройки не для версии маршрутизации 0.164.0
, но для 0.178.0
она работает как ожидалось.