Lego签SSL证书
HTTPS已经成为当今网站的标准配置,为网站提供加密和身份验证功能。但是申请和维护SSL证书一直是一个繁琐的过程。幸运的是,Lego这个强大的工具可以帮助我们轻松地自动化获取和更新Let’s Encrypt免费SSL证书。
Lego 简介
Lego是一个用Go语言编写的Let’s Encrypt客户端,它可以帮助我们自动化完成SSL证书的申请、验证和更新过程。相比于其他工具,Lego的优势在于:
- 支持多种验证方式,包括HTTP和DNS验证
- 集成了众多DNS服务商的API,可以自动完成DNS验证
- 使用简单,只需几个命令即可完成证书申请
- 支持通配符证书
安装 Lego
- mac
1
brew install lego
- docker
1
docker run goacme/lego -h
签发rout53证书
- 配置AWS密钥
1
2
3export AWS_ACCESS_KEY_ID=xxx
export AWS_SECRET_ACCESS_KEY=xxx
export AWS_REGION=us-east-1 - 生成ssl证书证书将保存在 ~/.lego/jenkins 目录下。
1
lego --email xhuaustc@gmail.com --domains jenkins.douhua.com --dns route53 --accept-tos --dns.disable-cp --path ~/.lego/jenkins run
- 其中email用来接收证书快过期时的提示
- lego支持多种dns provider, 如:阿里云,腾讯云,Route53等
- 对于不同的证书,需要指定不同的path目录
- 可生成泛域名证书,以腾讯云为例
1
2
3export TENCENTCLOUD_SECRET_ID=your_secret_id
export TENCENTCLOUD_SECRET_KEY=your_secret_key
lego --email xhuaustc@gmail.com --domains douhua.com --domains *.douhua.com --dns tencentcloud --accept-tos --dns.disable-cp --path ~/.lego/tencent/jenkins run
对于一些java应用需要jks证书
- 将ssl证书转为jks过程中需要输入密码。密码也可以通过命令行指定
1
2openssl pkcs12 -export -in domain.crt -inkey domain.key -out certificate.p12 -name jenkins
keytool -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore jenkins.douhua.com.jks -deststoretype JKS1
2openssl pkcs12 -export -in domain.crt -inkey domain.key -out certificate.p12 -name "jenkins" -password pass:yourpassword
keytool -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore jenkins.douhua.com.jks -deststoretype JKS -srcstorepass yourpassword -deststorepass yourpassword - 验证jks
1
keytool -list -v -keystore jenkins.douhua.com.jks
- jenkins中配置证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20$ cat /etc/jenkins/jenkins.conf
JENKINS_WAR=/opt/jenkins/jenkins.war
JENKINS_HOME=/opt/jenkins/data
JAVA_ARGS="-Djava.awt.headless=true \
-Djava.net.preferIPv4Stack=true \
-XX:+AlwaysPreTouch \
-XX:+UseG1GC \
-Xms8192m \
-Xmx8192m \
-Xss127m \
-Xlog:gc*=debug:file=gclog.log:utctime,level,tags:filecount=9,filesize=1M"
JENKINS_ARGS="--httpPort=-1 --httpsPort=8800 --logfile=/var/log/jenkins/jenkins.log \
--httpsKeyStore=/opt/jenkins/jenkins.douhua.com.jks \
--httpsKeyStorePassword=xxxxxx \
--useJmx"
$ /usr/bin/java $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS
更新route53证书
当证书有效期在30天以内,可以使用renew更新证书
1 | lego --email xhuaustc@gmail.com --domains jenkins.douhua.com --dns route53 --accept-tos --dns.disable-cp --path ~/.lego/jenkins renew |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论