您的位置:首页 > 编程语言 > Java开发

【Spring boot】使用Lets Encrypt 免费数字证书,全民SSL

2017-11-08 08:40 786 查看
其实https  ssl  并没有什么卵用,即使是通过使用 https 数字证书后,服务器 和 客户端  双向的数据传输 依然不是绝对安全的(数据有方案可以截获明文,这里不过多阐述,比如伪造证书等),但很多人并不知道这点。

我个人是使用https   ,仅因为 4点 1·流行  2·装X 3·浏览器上有个小绿标 好看 4·抵挡部分小菜鸟的抓包。

进入正题:

1·先根据 此教程 获取到证书:
https://github.com/xdtianyu/scripts/tree/master/le-dns
通过 DNS 验证方式获取 lets-encrypt 证书的快速脚本

脚本基于 letsencrypt.sh,通过调用 dns 服务商接口更新 TXT 记录用于认证,实现快速获取 lets-encrypt 证书。无需root权限,无需指定网站目录及DNS解析

cloudflare

下载

wget https://github.com/xdtianyu/scripts/raw/master/le-dns/le-cloudflare.sh
wget https://github.com/xdtianyu/scripts/raw/master/le-dns/cloudflare.conf
chmod +x le-cloudflare.sh

配置

cloudflare.conf 文件内容

CF_EMAIL="YOUR_API_KEY"

CF_EMAIL="YOUR_SECRET_KEY"

DOMAIN="example.com"

CERT_DOMAINS="example.com www.example.com im.example.com"

#ECC=TRUE

修改其中的 CF_EMAIL 及 CF_EMAIL 为您的邮箱和 cloudflare api key ,修改 DOMAIN 为你的根域名,修改 CERT_DOMAINS 为您要签的域名列表,需要 ECC 证书时请取消 #ECC=TRUE 的注释。

运行

./le-cloudflare.sh cloudflare.conf

最后生成的文件在当前目录的 certs 目录下

cron 定时任务

如果证书过期时间不少于30天, letsencrypt.sh 脚本会自动忽略更新,所以至少需要29天运行一次更新。

每隔20天(每个月的2号和22号)自动更新一次证书,可以在 le-cloudflare.sh 脚本最后加入 service nginx reload等重新加载服务。

0 0 2/20 * * /etc/nginx/le-cloudflare.sh /etc/nginx/le-cloudflare.conf >> /var/log/le-cloudflare.log 2>&1

注意 ubuntu 16.04 不能定义 day of month 含有开始天数的 step values,可以替换命令中的 2/20 为 2,22。

更详细的 crontab 参数请参考 crontab.guru 进行自定义

cloudxns

下载

wget https://github.com/xdtianyu/scripts/raw/master/le-dns/le-cloudxns.sh
wget https://github.com/xdtianyu/scripts/raw/master/le-dns/cloudxns.conf
chmod +x le-cloudxns.sh

配置

cloudxns.conf 文件内容

API_KEY="YOUR_API_KEY"

SECRET_KEY="YOUR_SECRET_KEY"

DOMAIN="example.com"

CERT_DOMAINS="example.com www.example.com im.example.com"

#ECC=TRUE

修改其中的 API_KEY 及 SECRET_KEY 为您的 cloudxns api key ,修改 DOMAIN 为你的根域名,修改 CERT_DOMAINS 为您要签的域名列表,需要 ECC 证书时请取消 #ECC=TRUE 的注释。

运行

./le-cloudxns.sh cloudxns.conf

最后生成的文件在当前目录的 certs 目录下

cron 定时任务

如果证书过期时间不少于30天, letsencrypt.sh 脚本会自动忽略更新,所以至少需要29天运行一次更新。

每隔20天(每个月的2号和22号)自动更新一次证书,可以在 le-cloudxns.sh 脚本最后加入 service nginx reload等重新加载服务。

0 0 2/20 * * /etc/nginx/le-cloudxns.sh /etc/nginx/le-cloudxns.conf >> /var/log/le-cloudxns.log 2>&1

注意 ubuntu 16.04 不能定义 day of month 含有开始天数的 step values,可以替换命令中的 2/20 为 2,22。

更详细的 crontab 参数请参考 crontab.guru 进行自定义

dnspod

下载

wget https://github.com/xdtianyu/scripts/raw/master/le-dns/le-dnspod.sh
wget https://github.com/xdtianyu/scripts/raw/master/le-dns/dnspod.conf
chmod +x le-dnspod.sh

配置

dnspod.conf 文件内容

TOKEN="YOUR_TOKEN_ID,YOUR_API_TOKEN"

RECORD_LINE="默认"

DOMAIN="example.com"

CERT_DOMAINS="example.com www.example.com im.example.com"

#ECC=TRUE

修改其中的 TOKEN 为您的 dnspod api token ,注意格式为123456,556cxxxx。 修改 DOMAIN 为你的根域名,修改 CERT_DOMAINS 为您要签的域名列表,需要 ECC 证书时请取消 #ECC=TRUE 的注释。

运行

./le-dnspod.sh dnspod.conf

最后生成的文件在当前目录的 certs 目录下

cron 定时任务

如果证书过期时间不少于30天, letsencrypt.sh 脚本会自动忽略更新,所以至少需要29天运行一次更新。

每隔20天(每个月的5号和25号)自动更新一次证书,可以在 le-dnspod.sh 脚本最后加入 service nginx reload等重新加载服务。

0 0 5/20 * * /etc/nginx/le-dnspod.sh /etc/nginx/le-dnspod.conf >> /var/log/le-dnspod.log 2>&1

注意 ubuntu 16.04 不能定义 day of month 含有开始天数的 step values,可以替换命令中的 5/20 为 5,25。

更详细的 crontab 参数请参考 crontab.guru 进行自定义

文件名 内容

cert.pem 服务端证书

chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书

fullchain.pem 包括了cert.pem和chain.pem的内容

privkey.pem 证书的私钥

一般情况下fullchain.pem和privkey.pem就够用了

tomcat 配置:http://www.cnblogs.com/blog5277/p/6375473.html

spring boot  application.properties配置

server.ssl.key-store=classpath:ssl/test.jks
server.ssl.key-store-password=
server.ssl.key-password=

需要 把生成的pem文件转成jks文件格式

推荐使用 沃通转换证书的一个工具,请自行到沃通官网下载

转换步骤大概如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot ssl