[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-setevaya-bezopasnost-chto-takoe-mtls-i-zachem-nuzhna-dvustoronnyaya-autentifikatsiya":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},847,"chto-takoe-mtls-i-zachem-nuzhna-dvustoronnyaya-autentifikatsiya",24,"setevaya-bezopasnost","Сетевая безопасность","🔒","Что такое mTLS и зачем нужна двусторонняя аутентификация?","mTLS (Mutual TLS) — расширение TLS, при котором не только клиент проверяет сертификат сервера, но и сервер проверяет сертификат клиента. Обе стороны аутентифицируют друг друга на уровне транспорта.\n\n### Отличие от обычного TLS\n\n| Параметр | TLS | mTLS |\n|----------|-----|------|\n| Сервер предъявляет сертификат | Да | Да |\n| Клиент предъявляет сертификат | Нет | Да |\n| Аутентификация сервера | Да | Да |\n| Аутентификация клиента | Нет (другие механизмы) | Да (на уровне TLS) |\n\n### Процесс mTLS Handshake\n\n```\nКлиент                                          Сервер\n   │──── ClientHello ──────────────────────────────>│\n   │\u003C─── ServerHello + Certificate ─────────────────│\n   │\u003C─── CertificateRequest ───────────────────────│  \u003C- сервер запрашивает\n   │\u003C─── ServerHelloDone ──────────────────────────│     сертификат клиента\n   │──── Certificate (сертификат клиента) ─────────>│  \u003C- клиент предъявляет\n   │──── ClientKeyExchange ────────────────────────>│     свой сертификат\n   │──── CertificateVerify ────────────────────────>│\n   │──── Finished ─────────────────────────────────>│\n   │\u003C─── Finished ─────────────────────────────────│\n```\n\n### Когда используется mTLS\n\n- Межсервисное взаимодействие — микросервисы аутентифицируют друг друга\n- Банковские интеграции — взаимодействие с платёжными системами (SWIFT, НСПК)\n- API для партнёров — контрагенты подключаются с использованием клиентских сертификатов\n- Service Mesh — Istio\u002FLinkerd автоматически обеспечивают mTLS между подами\n\n### Настройка mTLS в Spring Boot\n\n```yaml\nserver:\n  ssl:\n    key-store: classpath:server-keystore.p12\n    key-store-password: ${SSL_KEYSTORE_PASSWORD}\n    key-store-type: PKCS12\n    trust-store: classpath:truststore.jks\n    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD}\n    client-auth: need  # need = обязательно, want = опционально\n```\n\n### Настройка RestTemplate для mTLS\n\n\u003Cdetails>\u003Csummary>Пример Java-кода\u003C\u002Fsummary>\n\n```java\n@Bean\npublic RestTemplate restTemplate() throws Exception {\n    KeyStore keyStore = KeyStore.getInstance(\"PKCS12\");\n    keyStore.load(new FileInputStream(\"client-keystore.p12\"),\n                  \"password\".toCharArray());\n\n    KeyStore trustStore = KeyStore.getInstance(\"JKS\");\n    trustStore.load(new FileInputStream(\"truststore.jks\"),\n                    \"password\".toCharArray());\n\n    SSLContext sslContext = SSLContextBuilder.create()\n        .loadKeyMaterial(keyStore, \"password\".toCharArray())\n        .loadTrustMaterial(trustStore, null)\n        .build();\n\n    HttpClient httpClient = HttpClients.custom()\n        .setSSLContext(sslContext)\n        .build();\n\n    return new RestTemplateBuilder()\n        .requestFactory(() -> new HttpComponentsClientHttpRequestFactory(httpClient))\n        .build();\n}\n```\n\n\u003C\u002Fdetails>\n\nmTLS является стандартом для критичных интеграций, так как обеспечивает взаимную аутентификацию сторон на уровне транспорта ещё до обработки бизнес-логики.\n\n> **На собеседовании:** интервьюер хочет услышать разницу между TLS и mTLS и знание реальных сценариев применения (межсервисное взаимодействие, Service Mesh). Частая ошибка — не упомянуть `client-auth: need` в Spring Boot и не объяснить, зачем нужен TrustStore.","","middle",[15],"network-security",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое mTLS и зачем нужна двусторонняя аутентификация? — Gymterview","mTLS (Mutual TLS) — расширение TLS, при котором не только клиент проверяет сертификат сервера, но и сервер проверяет сертификат клиента. Обе стороны аутентифици","mTLS (Mutual TLS) — расширение TLS, при котором не только клиент проверяет сертификат сервера, но и сервер проверяет сер",[15,13],"mTLS (Mutual TLS) — расширение TLS, при котором не только клиент проверяет сертификат сервера, но и сервер проверяет сертификат клиента. Обе стороны аутентифицируют друг друга на уровне транспорта.",true]