Tomcat 9 配置多個(gè)虛擬主機(jī)與HTTPS證書 tomcat9

同一Tomcat下配置多虛擬主機(jī),資料查了好久,按照別人說的配置,配置好了,但是發(fā)現(xiàn)了一個(gè)問題,Safari、Chrome都可以成功打開,唯獨(dú)Firefox說配置有問題,無法驗(yàn)證證書!以為Firefox有問題,然后升級(jí)版本之后依然不行!又在第三方網(wǎng)站上查詢域名,說證書不是可信的簽發(fā)者,也就是說無法驗(yàn)證證書的簽發(fā)者!

但是這里有個(gè)問題,當(dāng)只配置單個(gè)虛擬主機(jī)的時(shí)候是沒問題的,配置多個(gè)就不行了!然后查看了官方文檔,原來是需要配置CA證書才能驗(yàn)證,然后就把簽發(fā)者的CA證書配置上了,終于成功了!
Connector部分屬性配置參考
http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

webapps目錄結(jié)構(gòu)如下

webapps/
├───domain
│   └─ROOT
├───x1
│   └─ROOT
└───x2
    └─ROOT

? 網(wǎng)站要放在ROOT目錄下才能被識(shí)別

編輯 conf/server.xml
1.找到 443端口位置 做如下修改

# 未配置APR的 配置如下
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8" defaultSSLHostConfigName="domain.com">

        <SSLHostConfig hostName="domain.com" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/domain.key"
                         certificateFile="conf/domain.crt"
                         type="RSA" />
        </SSLHostConfig>

        <SSLHostConfig hostName="x1.domain.top" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/x1.key"
                         certificateFile="conf/x1.crt"
                         type="RSA" />
        </SSLHostConfig>

        <SSLHostConfig hostName="x2.domain.top" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/x2.key"
                         certificateFile="conf/x2.crt"
                         type="RSA" />
        </SSLHostConfig>

    </Connector>
# 1.配置了APR的 協(xié)議名更改為 "org.apache.coyote.http11.Http11AprProtocol"
# 2.使用HTTP 2.0 需要在Connector添加子節(jié)點(diǎn)
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
# tomcat 9.0 已存在默認(rèn)配置
  找到Connector協(xié)議為`org.apache.coyote.http11.Http11AprProtocol`
  取消注釋,相應(yīng)修改即可
    <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" URIEncoding="UTF-8" defaultSSLHostConfigName="domain.com">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

        <SSLHostConfig hostName="domain.com" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/domain.key"
                         certificateFile="conf/domain.crt"
                         type="RSA" />
        </SSLHostConfig>

        <SSLHostConfig hostName="x1.domain.top" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/x1.key"
                         certificateFile="conf/x1.crt"
                         type="RSA" />
        </SSLHostConfig>

        <SSLHostConfig hostName="x2.domain.top" caCertificateFile="conf/CA證書.pem">
            <Certificate certificateKeyFile="conf/x2.key"
                         certificateFile="conf/x2.crt"
                         type="RSA" />
        </SSLHostConfig>

    </Connector>
# defaultSSLHostConfigName:當(dāng)存在多個(gè)虛擬主機(jī)時(shí) 必須指定一個(gè)做為默認(rèn)值
# CA證書.pem 是你的https證書簽發(fā)機(jī)構(gòu)的中級(jí)證書

2.找到 Host 位置配置虛擬主機(jī),各主機(jī)的根目錄全部放在webapps內(nèi),這樣不用開啟多個(gè)服務(wù),各虛擬主機(jī)共用80端口

<Engine name="Catalina" defaultHost="domain.com">
    <!-- domain -->
    <Host name="domain.com"  appBase="webapps/domain"
            unpackWARs="true" autoDeploy="true">
        <Alias>www.domain.com</Alias>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

    <!-- x1 -->
    <Host name="x1.domain.com"  appBase="webapps/x1"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

    <!-- x2 -->
    <Host name="x2.domain.com"  appBase="webapps/x2"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
</Engine>

保存 重啟tomcat服務(wù)
至此 大功告成!
祝好運(yùn)!

喜歡的可以點(diǎn)個(gè)??哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容