说明
由于工作需要,spring boot的https服务器搭建,经过一番调查终于实现,特此备忘
使用到的技术
- 使用spring boot作为服务器
- Let's Encrypt进行正式的颁发
- 证书格式转换使用在线工具
证书生成
进行https服务器搭建,首先需要的就是证书。签名认证证书话费不菲,这里选择了免费的Let's Encrypt进行证书的发布。
下面就是生成证书的准备工作
- 使用域名:www.xxx.com
- 域名绑定在一台服务器上(我使用的是阿里云服务器)
- 在服务器启动了httpd服务(默认使用80端口,存放的是公司的主页,默认的网页存放位置:/var/www/html)
下面开始进行证书发布
- 获取命令
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
如果发生python包安装的错误,应该是pip源的问题,换源可以解决
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
下面的方法是临时换源
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
- 生成证书
$ ./letsencrypt-auto certonly --webroot --webroot-path /var/www/html -d www.xxx.com --agree-tos --email admin@xxx.com
这里注意:证书使用--webroot 方式,表示80端口有服务在占用,页面的位置需要正确,-d后面是域名
letsencrypt的其他使用方式下午描述
- 生成证书查看
生成的证书默认应该在:/etc/letsencrypt/live/www.xxx.com 目录下
cert.pem:服务端证书
chain.pem:浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem:包括了cert.pem和chain.pem的内容
privkey.pem:证书的私钥
格式转换
我们的spring boot服务器,使用的证书格式为jks,这里需要进行证书格式的转换
我使用一个在线工具SSL证书格式转换工具
上传我们生成的证书,私钥等信息,就可以生成jks文件了。
服务器搭建
将生成的jks文件放置在classpath下
在spring boot的配置文件中增加如下内容
server.port=443
server.ssl.key-store: classpath:xxx.jks
server.ssl.key-store-password: 111111
server.ssl.keyAlias: xxx
注意名字,密码和别名别写错了!基本上都是上一个格式转换步骤我们自己定义的。
在服务器上启动服务就可以查看一下效果了!
这个时候不再是警告而是在地址栏出现一把绿色的小锁头!!大功告成
需要注意的是,证书只有3个月有效期