我一直在尝试使用HTTPS协议在学校中为Tomcat 8.5服务器配置SSL。由于我们尚未通过CA购买证书,因此我使用certbot获得了免费证书。我进行了一些配置,并且Tomcat正在HTTP上运行,但尚未在HTTPS上运行,并且日志上没有错误。这是我所做的。
-Tomcat 8.5安装在Windows服务器2012上。它在使用常规HTTP的应用程序中运行2年已完美运行。
-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连接器吗?我是否缺少任何配置?
谢谢大家。
答案 0 :(得分:0)
解决了!事实证明,我是as $。我的server.xml上的配置错误。 Http11NioProtocol的连接器应使用端口443(这是HTTPS的默认端口),而不是8443。 其余的配置和certboot上的certs请求都可以。
我认为使用8443是为了防止Tomcat落后于Apache或其他东西。由于我仅直接使用Tomcat,因此连接器端口应为443。 另外,请确保您的防火墙允许443端口。