前言
在SpringBoot服务中配置ssl,无非就是下载证书设置一下配置文件的问题,这里主要记录我在配置的过程中遇到的坑点。
如果是新手上道的话建议结合其他的资料或者博客一起参考,因为本篇文章对具体如何配置讲的比较少。
1.证书绑定问题
首先,阿里云有免费的ssl证书,而且可以随意选择要下载的证书类型,这点是很方便的,因为在不同的环境下可能需求不同,在这里直接选择想要的类型就可以了。
但需要注意的是,证书也是分类型的,而阿里的免费证书 (我用的 DigiCert 免费版 SSL) 是 单域名证书,也就是一个证书只能绑定到一个域名上,例如:baidu.com 和 fanyi.baidu.com 是需要两个SSL证书的,他们的证书不能通用(尽管他们两的二级域名是一样的),这是第一个坑点,单域名证书不能同时绑定两个三级域名,即使这两个三级域名的二级域名是同一个。
如果你使用的ssl证书绑定的是 xxx.you.com ,然后你当前服务器使用的是 yyy.you.com,那么你的网站就会出现“不安全”的访问字样,也就是小红锁。
2.证书和密码不匹配
我下载的是tomcat类型的证书文件,下载下来有一个压缩包,里面有一个pfx文件(证书文件)和一个txt文件(密码)。
注意第二个坑点来了,所下载的证书和密码,全部都是配套的,即使是同一个证书,每一次下载下来也是不同的,所以要注意证书文件和密码不能混用,否则就会出现密码错误、密码不匹配的问题。
3.yaml配置文件问题
server:
port: 443
ssl:
key-store: classpath:ssl/xxxxxxxxxxxx.pfx
key-store-type: "PKCS12"
key-store-password: "xxxxxxx"
这里需要注意的有两个点:
3.1 解密类型和证书类型是相关的
还记得我上面提到的,可以下载多种类型的证书吗,不同类型的证书下载下来的后缀名是不一样的,他们对应的配置项 key-store-type
也是不一样的,如果你选择的也是tomcat类型,证书后缀名也是 pfx,那大概率和我的是一样的 PKCS12
,否则,你应该参考官方文档,点击右侧的帮助按钮:
进去查看配置文件,寻找关键字keystoretype,照着文档里的类型就对了。
3.2 配置文件参数混淆
在idea中写配置文件的时候,会有自动提示的,很容易会把 key-store-password
这个参数写成 key-password
,因为语法补全会同时弹出这两个看起来很相似的参数。虽然我也不知道为什么有两个这么容易混淆的参数,但它确实是有,而且一旦写错,很难发现[┭┮﹏┭┮] ,会一直报错说密码错误或者密码不匹配之类的。
后记
这篇文章主要是记录SpringBoot配置SSL过程中可能遇到的坑点,对具体的配置操作其实讲的比较少,希望能够帮助到你 ^ _ ^。