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.