我一直在尝试为我使用HTTPS协议的学校的Tomcat 8.5服务器配置SSL . 由于我们没有购买CA证书,我使用certbot获得免费证书 . 我做了一些配置,我的Tomcat在HTTP上提供但在HTTPS上还没有,并且日志上没有错误 . 这就是我做的 .
- Tomcat 8.5安装在Windows Server 2012上 . 它在常规HTTP上为应用程序提供了2年的完美工作 .
-Certbot不支持Windows,因此,我必须在VM上安装Ubuntu 16.04 . -I在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服务器的文件夹中 . -I在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连接器吗?我错过了任何配置吗?
谢谢你们 .
1 回答
解决了!事实证明,我是一个$ . 我的server.xml上的配置是错误的 . Http11NioProtocol的连接器应使用端口443(这是HTTPS的默认设置),而不是8443.配置的其余部分和certboot上的证书请求都可以 .
我认为使用8443是因为你的Tomcat落后于Apache或其他东西 . 由于我直接使用Tomcat,因此连接器端口应为443.此外,请确保您的防火墙允许443端口 .