Я сделал пример приложения Springboot с кодом ниже в application.propertied
server.ssl.enabled=true
server.ssl.key-store=src/main/resources/SpringSecurity.p12
server.ssl.key-store-password=password
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=SpringSecurity
Также ниже два метода находятся в основном классе SpringBoot.
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat =
new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8082);
return connector;
}
Если я запускаю это приложение в Tomcat, например https://localhost:8082/hello, оно работает как самоподписанное. Если я нажму http://localhost:8082/hello, tomcat покажет неверный запрос, как и ожидалось. На самом деле, он также перенаправляет с 8080 на 8082.
Теперь я экспортирую его как файл .war
.
Теперь я создаю приложение в AWS Elastic Beanstalk, загружая вышеуказанный военный файл.
если я запускаю сгенерированный URL: http://SpringSecurity-env.eba-wwpkejwp.us-east-2.elasticbeanstalk.com/hello
, он работает, чего я не ожидаю, так как это http.
Мне нужно работать по https. Может ли кто-нибудь предложить мне, что я должен настроить/добавить/удалить в файле AWS/war?