本文将介绍如何使用Bash脚本在Tomcat上自动续订Letsencrypt SSL证书。下面这个Bash脚本来将续订过程设置为自动,通过避免重复出现相同的手动过程,让操作更便捷简单。
基本条件 你需要安装几个软件包才能使此过程正常运行,要在续订时收到电子邮件警报,你需要安装提供邮件命令的软件包。 1、对于CentOS系统 运行以下命令: # wget https://dl.eff.org/certbot-auto -P /usr/local/bin # chmod a+x /usr/local/bin/certbot-auto 如果有活动防火墙,例如firewalld,请在防火墙上打开https端口: # firewall-cmd --add-service https --permanent # firewall-cmd --reload 要获取电子邮件警报,请安装mailx包: $ sudo yum -y install mailx 2、对于Ubuntu系统 在Ubuntu服务器上运行这些命令以满足所有要求: # wget https://dl.eff.org/certbot-auto -P /usr/local/bin # chmod a+x /usr/local/bin/certbot-auto 如果有防火墙,请打开https端口,这是Letsencrypt在更新证书时经常使用的端口: $ sudo ufw allow https 参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程。 要获取电子邮件警报,请安装mailx包: $ sudo apt-get -y install mailutils
Bash脚本在Tomcat上自动续订Letsencrypt SSL证书的方法 1、使用脚本 现在已经设置了所有内容,clone此脚本,修改它,使其可执行并为其设置cron作业。 首先clone存储库: $ git clone https://github.com/jmutai/tomcat-letsencrypt.git $ cd tomcat-letsencrypt 一旦cloned了repo或下载了脚本,在准备好执行脚本之前,你需要定义变量,要编辑的文件是tomcat-letsencrypt-autorenew.sh: TOMCAT_DOMAIN="" TOMCAT_KEY_PASS="" CERTBBOT_BIN="/usr/local/bin/certbot-auto" EMAIL_NOTIFICATION="email_address" 然后保存更改: $ chmod +x tomcat-letsencrypt-autorenew.sh $ sudo cp tomcat-letsencrypt-autorenew.sh /usr/local/bin 你需要配置tomcat server.xml文件,请看下面的配置tomcat服务器部分,SSL文件应位于/etc/ssl/${DOMAIN}.jks上。 然后通过运行以下命令来执行脚本: $ sudo su - # /usr/local/bin tomcat-letsencrypt-autorenew.sh 如果你不需要电子邮件通知,可以跳过send_email_notification函数。 2、配置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 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 Manager App: http://server_IP_address:8080/manager/html 3、设置cron工作 要每天运行一个cron作业,请检查是否需要续订证书: # crontab -e 增加: 30 3 * * * /usr/local/bin tomcat-letsencrypt-autorenew.sh 这意味着它将每天凌晨3点运行以进行检查,如果证书未到期续订,则脚本将正常退出。
相关主题 |