Некоторое время назад я написал небольшое руководство о том, как вы можете создавать SSL-сертификаты Let’s Encrypt и устанавливать их на свою платформу Glassfish Java EE. Этот трюк творил чудеса для меня, но необходимость вручную обновлять и переустанавливать сертификаты каждые три месяца становилась довольно раздражающей.
Я провел небольшое исследование, и, как и в первом уроке, в основном это краткое изложение моих выводов. Прежде всего, я должен упомянуть г-на Дашнера, который объяснил мне, как HTTPS обычно обрабатывается в мире Java EE — большое спасибо!
Короче говоря: Payara, Glassfish, JBoss и другие имеют некоторые различия в том, как они обрабатывают HTTPS, поэтому, как сказал г-н Дачнер, разумный способ сделать это — позволить им работать через HTTP за кулисами и позволить HTTP-серверу Apache фактически общаются с пользователями, выступая в качестве обратного прокси-сервера, перенаправляя все запросы в / из скрытой платформы Java EE.
Перво-наперво, скачайте Payara или другой сервер по вашему выбору, установите и запустите его с конфигурацией по умолчанию. По умолчанию он должен прослушивать порт 8080
. Не нужно ничего делать дальше.
Затем установите Apache, как описано здесь, и в файле /etc/apache2/sites-available/example.com.conf
укажите следующее (файл example.com.conf
как в связанной статье):
1
2
3
4
5
6
7
8
|
<VirtualHost *: 80 > ... ProxyPass / https: //0.0.0.0:8080/ ProxyPassReverse / https: //0.0.0.0:8080/ ProxyPass /myapp http: //0.0.0.0:8080/myapp ProxyPassReverse /myapp http: //0.0.0.0:8080/myapp </VirtualHost> |
После сохранения изменений не забудьте перезагрузить Apache
, поэтому он читает новую конфигурацию:
sudo systemctl reload apache2
Теперь попросите ваш брандмауэр выставить порт 80
для входящих подключений (это, вероятно, уже настроено), и вы наполовину готовы. Пока у вас есть работающий сервер Apache, который перенаправляет все запросы, сделанные на www.example.com
и www.example.com/myapp
во внутренний Payara.
Чтобы включить SSL через Let’s Encrypt, просто следуйте certbot
описанным здесь, и не забудьте нажать 2
когда из certbot
появится следующее сообщение:
1
2
3
4
5
6
7
8
|
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1 : No redirect - Make no further changes to the webserver configuration. 2 : Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [ 1 - 2 ] then [enter] (press 'c' to cancel): |
Нажатие 2
даст команду certbot автоматически настроить Apache, чтобы он перенаправлял весь HTTP-трафик на HTTPS. Это очень удобно, поскольку ссылки http://
по-прежнему широко распространены, поэтому имеет смысл лишь перенаправить пользователя на безопасную альтернативу.
Вот и все, теперь все должно работать через HTTPS, и вы всегда должны видеть зеленую блокировку в своем браузере при доступе к приложениям Java EE через www.example.com
. Единственное, что мне не нравится, это то, что, по-видимому, мы должны указывать каждый контекстный корень (т.е. /myapp
) в конфигурационном файле Apache. Это кажется очень неудобным, поэтому я спросил StackOverflow, как мы можем избежать этого — если вы знаете, пожалуйста, отправьте ответ!
Опубликовано на Java Code Geeks с разрешения MIhai Andronache, партнера нашей программы JCG. Смотреть оригинальную статью здесь: Apache. Скумбриевидный гидролик. Давайте зашифруем. Мнения, высказанные участниками Java Code Geeks, являются их собственными. |