Certbot 自动生成jks密钥文件

certbot更新证书很OK,但是jks的证书格式就很麻烦,加上一个自动脚本每天定时执行即可,再来一个自动启动Java程序的,基本上就不需要因为证书问题去维护了。

废话少说,直接上代码

#!/bin/bash

# Certbot命令,用于生成或更新证书
certbot_command="certbot renew"

# 运行Certbot命令来生成或更新证书
$certbot_command

# Certbot生成的证书和私钥文件路径
cert_path="/etc/letsencrypt/live/xxx.com/fullchain.pem"
key_path="/etc/letsencrypt/live/xxx.com/privkey.pem"

# JKS目标路径和文件名
jks_path="/opt/java/project"  # 此处文件夹结尾不加/
jks_filename="xxx.com.jks"

# JKS别名和密码
alias_name="wodejks"
keystore_password="pwd123456"

# 将证书和私钥合并为PKCS12格式
openssl pkcs12 -export -in $cert_path -inkey $key_path -out $jks_path/cert.p12 -name $alias_name -password pass:$keystore_password

# 将PKCS12格式转换为JKS格式
keytool -importkeystore -destkeystore $jks_path/$jks_filename -srckeystore $jks_path/cert.p12 -keypass $keystore_password -srcstoretype PKCS12 -storepass $keystore_password
echo '\n\n\n'
keytool -importkeystore -srckeystore $jks_path/cert.p12 -srcstoretype PKCS12 -destkeystore $jks_path/$jks_filename -deststoretype JKS -srcstorepass $keystore_password -deststorepass $keystore_password  -destkeypass $keystore_password -noprompt

# 删除临时文件
rm $jks_path/cert.p12

定时执行脚本,可以使用crontab -e
然后和vim一样,编辑内容:

0 4 * * * /path/to/your/gen_jks.sh

设置为每天凌晨4点,执行/path/to/your目录下的gen_jks.sh文件

请注意:脚本并未加入Kill和启动Java程序的内容,需要自己手动编辑,kill指定Java进程,可以根据端口监听来获取进程id,比如监听8080端口的进程:lsof -ti:8080 | xargs kill
这个命令使用了两个关键命令:lsof 和 kill。
lsof -ti:8080:这个命令使用 lsof 工具来查找监听端口为8080的进程,并使用 -ti 选项仅输出进程的PID(进程ID)。
xargs kill:xargs 命令将前一步获取的PID作为参数传递给 kill 命令,以杀死对应的进程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容