Решив (я надеюсь) мои проблемы с взаимно независимыми серверами 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».