如何在 Tomcat 上为 HTTPS 配置 certbot 证书?

How do I configure certbot certificates on Tomcat for HTTPS?

我一直在尝试为我工作的学校的 Tomcat 8.5 服务器配置 SSL,以使用 HTTPS 协议。由于我们还没有购买带有 CA 的证书,我使用 certbot 获得了一个免费证书。我做了一些配置,我的 Tomcat 在 HTTP 上提供服务,但还没有在 HTTPS 上提供服务,并且日志中没有错误。这是我所做的。

-Tomcat 8.5 安装在 Windows 服务器 2012 上。它已经完美运行了 2 年,为常规 HTTP 上的应用程序提供服务。
-Certbot 不支持 Windows,因此,我不得不在 VM 上安装 Ubuntu 16.04。 -我在 Ubuntu 上成功安装了 certboot。 -我使用以下命令获取我的 certbot 证书:

sudo certbot certonly --preferred-challenges http --manual -d theDomainOfMySchool.com

-成功完成 ACME 挑战后,我得到了这 4 个 .pem 文件:cert1.pem、chain1.pem、fullchain1.pem 和 privkey1.pem。

-所有 4 个文件都是 base64 格式的明文,就像我粘贴在这里的摘录:

-----BEGIN CERTIFICATE-----
MIIFYTCCBEmgAwIBAgISAwyxKh7NQWpNnH6w2enPbOlxMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD

-在获得从 /etc/letsencrypt/archive 复制 4 个文件的权限后,我将它们放在 Windows 我的 Tomcat 服务器的文件夹中。 -我在 server.xml 上配置了 Tomcat 和以下节点:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/cert/certbot_gallery/privkey1.pem"
                         certificateFile="conf/cert/certbot_gallery/cert1.pem"
                         certificateChainFile="conf/cert/certbot_gallery/chain1.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

    <Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

-当我启动 Tomcat 时,日志中没有错误。

-服务器启动正常,在 HTTP 上服务没有问题。

-当我尝试通过 HTTPS 访问应用程序时,我在浏览器上得到 ERR_CONNECTION_RESET。

我做错了什么。这种证书不适合这个 Tomcat 连接器吗?我是否缺少任何配置?

谢谢大家

已解决!事实证明,我是一个 as$。我的 server.xml 上的配置是错误的。 Http11NioProtocol 的连接器应该使用端口 443(这是 HTTPS 的默认端口),而不是 8443。 其余配置和 certboot 上的证书请求都可以。

我认为使用 8443 是为了防止您的 Tomcat 落后于 Apache 或其他软件。因为我直接使用,并且只使用 Tomcat,连接器端口应该是 443。 另外,请确保您的防火墙允许 443 端口。