Назад | Перейти на главную страницу

Tomcat за httpd, с Let's Encrypt и Certbot - мой VirtualHost прав?

Решив (я надеюсь) мои проблемы с взаимно независимыми серверами httpd и Tomcat на экземпляре Amazon Linux («не 2»), теперь у меня возникла ситуация, в которой я делать хотите, чтобы Tomcat работал за существующим запущенным httpd на экземпляре Amazon Linux 2, который уже получил сертификат Let's Encrypt через certbot. Но в последний раз, когда я экспериментировал с этим (несколько месяцев назад, как и тот, который я наконец-то начал работать с Lego), у меня были изрядные проблемы с тем, чтобы заставить его работать даже частично, и что-то, что я сделал, сильно испортило автоматическое обновление, о котором мы не узнали, пока не истек срок действия сертификата.

Вот добавленный мной файл httpd conf (фактические имена и IP-адреса отредактированы), чтобы предоставить виртуальный хост для нового поддомена. Для меня не имеет значения, перенаправляются ли запросы браузера, отправленные на порт 80, на https или нет; важной частью является то, что (1) Certbot и Let's Encrypt могут видеть и делать то, что им нужно, (2) пользователи могут обращаться ко всем контекстам веб-приложений на сервере Tomcat, включая ROOT, и (3) только указанные IP-адреса могут видеть менеджер и хост-менеджер.

Есть ли что-нибудь очевидное, что я делаю не так?

 <VirtualHost *:80>
 ServerName xyweb.frobozz.com
 DocumentRoot /var/www/html/test
 ServerAdmin info@frobozz.com
 <Directory /var/www/html/test>
 AllowOverride All
 </Directory>
 # RewriteEngine on
 # RewriteCond %{HTTP_HOST} !^www\. [NC]
 # RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </VirtualHost>

 <IfModule mod_ssl.c>
 <VirtualHost *:443>
 ServerName xyweb.frobozz.com
 DocumentRoot /var/www/html/test
 ServerAdmin info@frobozz.com
 <Location /manager>
  Require ip ww.xx.yy.zz aa.bb.cc.dd ee.ff.gg.hh
 </Location>
 <Location /host-manager>
  Require ip ww.xx.yy.zz aa.bb.cc.dd ee.ff.gg.hh
 </location>
 ProxyPass "/" "http://127.0.0.1:8080/"
 ProxyPassReverse "/" "http://127.0.0.1:8080/"
 ProxyRequests Off
 Include /etc/letsencrypt/options-ssl-apache.conf
 SSLCertificateFile /etc/letsencrypt/live/fizmo.com/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/fizmo.com/privkey.pem
 </VirtualHost>
 </IfModule>

Видимо, так и есть, потому что сегодня у меня наконец-то было время протестировать его, и он сработал.

Я также узнал, что все мои глупые попытки несколько месяцев назад добавить новый субдомен к существующему сертификату Let's Encrypt и конфигурации Certbot, используемым всеми другими субдоменами, были бессмысленным упражнением, которое просто усложнило мне задачу: каждый поддомен, имеющий свой собственный виртуальный хост на сервере httpd, также может иметь свой собственный сертификат. Также помогло то, что я сегодня узнал о «certbot Renew --force-Renewal».