我已经在互联网上关注了一些指南,但我现在被困住了,因为他们告诉我从现在开始没有这样做。
我有一个带有Tomcat8的Ubuntu 16.04。我已经在Tomcat的webapps中部署了一个应用程序,它在http上工作正常。然后我使用letsencrypt获取证书,在验证我的Tomcat设置后,它给了我4个.pem文件。
chain.pem
fullchain.pem
cert.pem
privkey.pem
现在我不明白如何在我的Tomcat / conf / server.xml中链接/使用它们,以便能够访问端口443/8443上的应用程序。当我使用非root用户安装Tomcat服务时,我已经为443到8443设置了一个portforwarding。我将.pem文件放入我的Tomcat的conf文件夹中,因此server.xml就在它们旁边。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/privkey.pem"
certificateFile="conf/cert.pem"
certificateChainFile="conf/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
这是我在server.xml文件中的当前设置,但它无法正常工作。预设也没有“fullchain.pem”的地方,我也不知道是否需要更改“org.apache”中的行,因为我不知道实际上是做什么的。
提前致谢。我设法在Windows和Ubuntu上做了一个自签名证书,但是你总是得到这个不安全的警告。有人告诉我,这不会发生在letsencrypt。
答案 0 :(得分:3)
我将写出如何安装的方法:
下载certbot:
$ wget https://dl.eff.org/certbot-auto<br/>
$ chmod a+x certbot-auto
获取证书:
$ sudo /path/to/certbot-auto certonly --webroot -w /path/to/apache-tomcat-8.5/webapps/ROOT -d example.com
您的证书将下载到以下文件夹:“ / etc / letsencrypt / live / YOUR_WEBSITE_HERE /”
像这样在server.xml中编辑HTTPS连接器
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
<SSLHostConfig>
<Certificate
certificateKeyFile="/etc/letsencrypt/live/YOUR_WEBSITE_HERE/privkey.pem"
certificateFile="/etc/letsencrypt/live/YOUR_WEBSITE_HERE/cert.pem" certificateChainFile="/etc/letsencrypt/live/YOUR_WEBSITE_HERE/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
我们的加密证书通常有效期为90天,因此您需要定期更新。将以下行添加到crontab中:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && ./path/to/certbot-auto renew
我还写了一篇关于它的博客文章,您可以在这里找到:https://www.gasimof.com/blog/enable-https-for-free-for-tomcat/