Ssl

用於 tomcat 的 Cyclos Docker SSL 實現

  • May 20, 2019

我在docker容器中配置了tomcat,如下所示

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                  maxThreads="150" SSLEnabled="true">
           <SSLHostConfig>
               <Certificate certificateKeystoreFile="my.jks"
                            type="RSA" />
           </SSLHostConfig>
       </Connector>

       <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
                  maxThreads="150" SSLEnabled="true" >
           <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
           <SSLHostConfig>
                   <Certificate certificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
                           certificateFile="/etc/letsencrypt/live/example.com/cert.pem"
                           certificateChainFile="/etc/letsencrypt/live/example.com/chain.pem"
                            type="RSA" />

重新啟動 docker 容器,但無法通過 https 訪問

my.jks 儲存在 tomcat/conf 目錄中。

我配置docker容器如下:

docker run -d \
   --name=nameofcontainer \
   -p 80:8080 \
   -p 443:8443 \
   --net=cyclos-net \
   --cap-add=NET_ADMIN \
   -e DB_HOST=cyclos-db \
   -e DB_NAME=cyclos \
   -e DB_USER=cyclos \
   -e DB_PASSWORD=cyclos \
   image-id

但是無法通過 https 或埠 8443 訪問網站

根據SSL/TLS 配置如何

要定義 Java (JSSE) 連接器,無論是否載入了 APR 庫,請使用以下選項之一:

<!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO implementation -->
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" .../>

<!-- Define a HTTP/1.1 Connector on port 8443, JSSE BIO implementation -->
<Connector protocol="org.apache.coyote.http11.Http11Protocol" port="8443" .../>

為什麼在同一個埠上同時使用兩個連接器?

您應該只使用其中之一。或者在不同的埠上配置它們。

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