Gymterview
middle

Как обеспечить transport layer security для веб-приложения

Transport Layer Security (TLS/SSL) обеспечивается настройкой HTTPS в контейнере сервлетов. Для этого необходимо: получить SSL-сертификат, настроить HTTPS-коннектор в контейнере, и опционально — настроить перенаправление HTTP на HTTPS.

Настройка в Tomcat (server.xml)

Пример
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="/path/to/keystore.jks"
    keystorePass="password"
    clientAuth="false" sslProtocol="TLS" />

Настройка в Spring Boot (application.yml)

Пример
server:
  port: 8443
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: PKCS12

Дополнительно можно настроить принудительный HTTPS через web.xml:

Пример
<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

В production HTTPS обычно терминируется на уровне reverse proxy (Nginx) или балансировщика, а не на уровне контейнера сервлетов.

На собеседовании: упомяните, что в production TLS обычно настраивается на уровне инфраструктуры (Nginx, AWS ALB), а не в приложении. Приложение работает по HTTP внутри защищённой сети, а TLS-терминация происходит на edge.