tomcat 的 Cyclos Docker SSL 实现

tomcat 的 Cyclos Docker SSL 实现

我已经在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 访问网站

答案1

按照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" .../>

为什么要在同一个端口上同时使用两个连接器?

你应该只使用其中一个。或者在不同的端口上配置它们。

相关内容