spring boot搭建https服务器

说明

由于工作需要,spring boot的https服务器搭建,经过一番调查终于实现,特此备忘
使用到的技术

  1. 使用spring boot作为服务器
  2. Let's Encrypt进行正式的颁发
  3. 证书格式转换使用在线工具

证书生成

进行https服务器搭建,首先需要的就是证书。签名认证证书话费不菲,这里选择了免费的Let's Encrypt进行证书的发布。
下面就是生成证书的准备工作

  1. 使用域名:www.xxx.com
  2. 域名绑定在一台服务器上(我使用的是阿里云服务器)
  3. 在服务器启动了httpd服务(默认使用80端口,存放的是公司的主页,默认的网页存放位置:/var/www/html)

下面开始进行证书发布

  1. 获取命令
$ 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
  1. 生成证书
$ ./letsencrypt-auto certonly --webroot --webroot-path /var/www/html -d www.xxx.com --agree-tos --email admin@xxx.com

这里注意:证书使用--webroot 方式,表示80端口有服务在占用,页面的位置需要正确,-d后面是域名
letsencrypt的其他使用方式下午描述

  1. 生成证书查看
    生成的证书默认应该在:/etc/letsencrypt/live/www.xxx.com 目录下
    cert.pem:服务端证书
    chain.pem:浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
    fullchain.pem:包括了cert.pem和chain.pem的内容
    privkey.pem:证书的私钥

格式转换

我们的spring boot服务器,使用的证书格式为jks,这里需要进行证书格式的转换
我使用一个在线工具SSL证书格式转换工具

image.png

上传我们生成的证书,私钥等信息,就可以生成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个月有效期

推荐阅读更多精彩内容