使用Letsencrypt SSL证书在CentOS 7上安装Apache Tomcat 7

时间:2020-02-23 14:31:28  来源:igfitidea点击:

Apache Tomcat是用于服务Java应用程序的Web服务器和servlet容器。 Tomcat是由Apache Software Foundation发布的Java Servlet和JavaServer Pages技术的开源实现。

这是从部署ODKAggregate tomcat应用程序和Letsencrypt SSL证书中学到的经验的文档。

该设置基于CentOS 7服务器和Tomcat 7.0.69

Tomcat安装

sudo yum -y install epel-release
sudo yum -y install tomcat tomcat-docs-webapp tomcat-javadoc tomcat-webapps tomcat-admin-webapps

配置JAVA路径

sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
sudo update-alternatives --config java
sudo update-alternatives --config javac

$ls -l  /usr/lib/jvm

sudo tee -a /etc/bashrc<<EOF
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF

$source /etc/bashrc
$echo $JAVA_HOME
$java -version

Tomcat JAVA选项文件为/etc/tomcat/tomcat.conf,示例配置:

JAVA_OPTS="-Xms1024m -Xmx7328m -XX:MaxPermSize=5898m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

如果我们想添加管理员用户来使用GUI管理Tomcat,可以在文件/usr/share/tomcat/conf/tomcat-users.xml下的以下部分中完成:

<tomcat-users>
...
</tomcat-users>

例:

<tomcat-users>
    <user username="admin" password="password" roles="manager-gui,admin-gui"
</tomcat-users>

安装Letsencrypt

wget https://dl.eff.org/certbot-auto -P /usr/local/bin
chmod a+x /usr/local/bin/certbot-auto

申请Letsencrypt SSL域名证书

firewall-cmd --add-service https --permanent
firewall-cmd --reload
certbot-auto certonly -d odk2.domain.com

SSL内容将位于/etc/letsencrypt/live/odk2.domain.com/下

创建一个包含完整链和私钥的PKCS12

openssl pkcs12 -export -out /tmp/odk2.domain.com_fullchain_and_key.p12 \
    -in /etc/letsencrypt/live/odk2.domain.com/fullchain.pem \
    -inkey /etc/letsencrypt/live/odk2.domain.com/privkey.pem \
    -name tomcat

将该PKCS12转换为JKS

keytool -importkeystore \
    -deststorepass ughubieVahfaej5 -destkeypass ughubieVahfaej5 -destkeystore odk2.domain.com.jks \
    -srckeystore odk2.domain.com_fullchain_and_key.p12  -srcstoretype PKCS12 -srcstorepass ughubieVahfaej5 \
    -alias tomcat

用密码替换ughubieVahfaej5

配置tomcat服务器

# vim /etc/tomcat/server.xml

确保将以下部分注释掉

<!--
    <Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" 
    -->

配置连接器以使用共享线程池

<Connector executor="tomcatThreadPool"
            port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" 

接下来是在端口8443上定义SSL HTTP/1.1 Connector

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
            maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
            keystoreFile="/etc/ssl/odk2.domain.com.jks"
            keystorePass="ughubieVahfaej5"
            clientAuth="false" sslProtocol="TLS" 

通过上述配置,将自动为该应用程序完成从http到https重定向,可以在以下位置访问:

http://server_IP_address:8080

管理应用

http://server_IP_address:8080/manager/html