Может ли мое приложение Spring Boot запускать HTTPS только для определенных @RequestMappings? - PullRequest
0 голосов
/ 30 мая 2018

Я работаю над Spring Application, если для умного дома.У меня есть микроконтроллеры, которые отправляют данные в приложение Spring, но я не могу реализовать на них SSL из-за нехватки места и скорости обработки.

На стороне клиента я хочу использовать HTTPS, потому что клиент работает на Android.

Могу ли я привязать определенные запросы к HTTP и другие к HTTP?

1 Ответ

0 голосов
/ 31 мая 2018

Разве мы не можем открыть два порта из приложения весенней загрузки, один на 443, другой на 80. Так, чтобы по https он слушал 443 и по http до 80. Так что в вашем приложении вы можете настроить http на URL для использования 80порт и https для использования порта 443.

Мы можем сделать это путем изменений в application.properties:

#Https settings
server.port=443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password = secret
server.ssl.key-password = secret
#Http setting
server.http.port=80

Я приведу пример с использованием сервера Undertow, вы можете сделать это на любомсервер приложений (tomcat и т. д.):

@SpringBootApplication
public class Boot {

    @Value("${server.http.port:0}")
    private Integer httpPort;

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Boot.class, args);
    }

    @Bean
    public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
        UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
        factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {

            public void customize(Builder builder) {
                // worker options
                builder.setWorkerThreads(500);
                builder.setWorkerOption(Options.TCP_NODELAY, true);

                // io options
                builder.setIoThreads(Runtime.getRuntime().availableProcessors() * 2);

                // socket options
                builder.setSocketOption(Options.BACKLOG, 10000);
                builder.setSocketOption(Options.TCP_NODELAY, true);
                builder.setSocketOption(Options.REUSE_ADDRESSES, true);

                // server options
                builder.setServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE, false);
                builder.setServerOption(UndertowOptions.ALWAYS_SET_DATE, true);
                builder.setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, false);

                // Done to keep both http and https port open at production
                if (httpPort > 0)
                    builder.addHttpListener(httpPort, "0.0.0.0");
            }

        });
        return factory;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...