我已经在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" .../>
为什么要在同一个端口上同时使用两个连接器?
你应该只使用其中一个。或者在不同的端口上配置它们。