Nano Hash - криптовалюты, майнинг, программирование

Heroku: приложение Spring Boot Gradle с сервером https tomcat и закреплением сертификата

У меня есть Java-приложение Spring Boot, которое использует самозаверяющий сертификат для связи с интерфейсом Android.

Я использую сервер tomcat в качестве своего контейнера для приложения:

compile 'org.springframework.boot:spring-boot-starter-tomcat'

Теперь я включил https/ssl:

            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addConnectorCustomizers(connector -> {
                connector.setPort(Integer.parseInt(serverPort));
                connector.setSecure(true);
                connector.setScheme("https");

Я должен включить SSL, так как я хочу, чтобы мой интерфейс Android безопасно связывался с моим сервером. Я использую метод, называемый закреплением сертификата, что означает, что я добавляю один и тот же самозаверяющий сертификат как на свой сервер, так и в свое приложение для Android. Для любого HTTP-соединения между ними соединение будет зашифровано с помощью ключей одного и того же сертификата, и, следовательно, сервер и приложение Android смогут понимать друг друга.

Когда я загружаю его в Heroku, я получаю ошибки каждый раз, когда пытаюсь вызвать сервер:

2015-12-11T20:04:32.424629+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/getfood?postid=566348364a918a12046ce96f" host=app.herokuapp.com request_id=bf975c13-69f3-45f5-9e04-ca6817b6c410 fwd="197.89.172.181" dyno=web.1 connect=0ms service=4ms status=503 bytes=0

Согласно этому блогу Джули: http://juliekrueger.com/blog/

Кстати, в приложениях Heroku по умолчанию включен протокол https. На сервере, который я устанавливал, Tomcat был настроен на использование https, и попытка доступа к конечной точке возвращала ошибку code=H13 desc="Connectionclosed Without response". После того, как я удалил эту конфигурацию, ошибка исчезла.

Я могу исправить ошибку, просто удалив ssl/https с моего сервера tomcat, но, как я уже упоминал, я хочу использовать метод закрепления сертификата для безопасной связи.

Я думал, можно ли отключить SSL на стороне heroku, но оставить SSL моего сервера tomcat активным, но я уже связался с Heroku, и они сказали мне, что отключение дополнительного SSL, которое входит в стандартную комплектацию их службы, невозможно.

Я также рассмотрел здесь платную альтернативу под названием SSL Endpoint, но она кажется полезной только для пользовательских доменов. Поскольку все конечные точки закодированы в моем приложении для Android и не видны пользователю, для меня нет смысла использовать собственный домен. Кроме того, я не думаю, что это решит мою проблему, поскольку его единственная цель, по-видимому, заключается в создании пользовательского домена:

Конечная точка SSL полезна только для пользовательских доменов. Все домены appname.herokuapp.com по умолчанию уже поддерживают SSL и могут быть доступны по https, например, https://appname.herokuapp.com.

Я гуглил в течение нескольких дней и не могу найти решение. Отключение ssl на моей стороне tomcat было бы неприемлемо, на мой взгляд, поскольку это создает слишком много рисков. Я бы даже рассмотрел другие сервисы (Azure и т. д.), если бы это решило мою проблему.

Любые идеи о том, как я могу это решить?


Ответы:


1

С Heroku, чтобы использовать свой собственный SSL, вам нужно использовать собственный домен и надстройку SSL Endpoint, это, вероятно, не будет иметь смысла для вашего случая, но это единственный способ использовать ваш собственный сертификат.

И я не пробовал всех провайдеров, но с теми, что я пробовал, сценарий точно такой же, можно использовать собственный сертификат SSL, только если вы используете собственный домен.

Хотя, немного просматривая Google, нашел этот сообщение в блоге, где он иллюстрирует, как использовать промежуточную службу DNS для связи с Heroku. При обмене данными между службой DNS и Heroku используется предоставленный SSL-сертификат heroku, но от клиента к службе DNS используется другой сертификат, поэтому он может быть полезен.

Обновление. Возможным решением было бы использование Amazon Web Services, где сделка заключается в том, что вы арендуете виртуальные машины и можете настроить свою собственную среду, а это означает, что вы можете установить свой собственный кот и использовать свой собственный. пользовательский SSL.

Обновление 2: также есть CloudFront с AWS, где вы можете использовать свои собственные сертификаты объяснено здесь

15.12.2015
  • Это немного раздражает, поскольку хостинговые сайты должны просто предоставлять простую платформу для запуска встроенных приложений Tomcat без каких-либо дополнительных действий. Добавляя дополнительный ssl, они фактически создают больше проблем для своих потребителей. Возможно, мне просто придется заплатить 20 долларов за размещение моего ssl-сертификата в аддоне SSL Endpoint сейчас, когда он мог бы быть бесплатным, если бы мой встроенный кот выполнял всю работу вместо этого. 15.12.2015
  • Могу я спросить вас, каких провайдеров вы пробовали, чтобы я тоже не пробовал их? Это может сэкономить мне время. 15.12.2015
  • В основном Openshift и Heroku. Хотя я подумал о возможном решении, поэтому обновлю ответ. 15.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..