Tomcat

httpd 後面的 Tomcat,帶有 Let’s Encrypt 和 Certbot——我的 VirtualHost 對嗎?

  • August 18, 2020

(我希望)解決了我在 Amazon Linux(“不是 2”)實例上使用相互獨立的 httpd 和 Tomcat 伺服器的問題後,我現在確實希望 Tomcat 在 Amazon 上現有的、正在執行的 httpd 後面執行已經通過 certbot 獲得 Let’s Encrypt 證書的 Linux 2 實例。但我最後一次嘗試這個時(幾個月前,就像我終於和樂高一起工作的那個),我在讓它部分功能方面遇到了相當大的麻煩,而且我做的事情嚴重搞砸了自動更新,直到證書對我們過期,我們才發現。

這是我添加的(實際名稱和 IP 地址已編輯)httpd conf 文件,用於為新子域提供虛擬主機。發送到埠 80 的瀏覽器請求是否被重定向到 https 對我沒有影響;重要的部分是(1)Certbot 和 Let’s Encrypt 可以看到並做他們需要做的事情,(2)使用者可以訪問 Tomcat 伺服器上的所有 webapp 上下文,包括 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 cert 和 Certbot 配置是一個毫無意義的練習,只會讓事情變得更加困難:在 httpd 伺服器上擁有自己的虛擬主機的每個子域也可以擁有自己的證書。這也有助於我今天了解“certbot renew –force-renewal”。

引用自:https://serverfault.com/questions/1030187