如何在 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 端口。
我一直在尝试为我工作的学校的 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 端口。