有个🔒的感觉就是 8 一样嗷。
本文只说操作步骤,别的不讲,因为不会。
必要的前提
- 拥有一个域名
- 拥有一个 Linux 服务器
申请证书
我是通过 Youtube 视频 了解到如何快速免费的申请一个 HTTPS 证书的,推荐大家可以看一哈。
申请证书的网站是:FreeSSL
进入首页
需要注意的是:证书的类型以及证书的有效期,根据个人需要选择。
我选择的是第二个,因为我需要用到多个二级域名。
如果只有一个网站,建议选择第一个,因为有效期比较长。
如果证书到期了,就需要到这个网站再申请一次。
接下来输入自己的域名,我输入的是:*.ddllzz.xyz
创建证书
直接输入邮箱然后点击创建即可。
但是为了安全起见,推荐自己生成 CSR,工具自己去网上搜。
验证
完成上面一步之后可以看到:
此时需要根据上面的提示为自己的域名添加 DNS 解析:
等待一会点击上面图中的“配置完成,检测一下”。
看到下图说明 OK 了。
再然后点击上图的“点击验证”,得到证书信息:
点击下载证书,记得保管好。
转换
刚才下载了证书(下载的是一个压缩包),压缩包里的文件是:full_chain.pem 和 private.key,而我们在 Spring Boot 中需要的是 pkcs12 类型的文件,所以需要用 openssl 进行转换。
推荐在 Linux 下完成转换,因为我在 Windows 下生成的 private.key 一直是 0kb,同样的操作在 Linux 下就没问题。
1 | openssl pkcs12 -export -in full_chain.pem -inkey private.key -out keystore.p12(这个是生成的文件名) -name tomacat -CAfile full_chain.pem -caname root |
现在得到了 keystore.p12,就可以在 Spring Boot 项目中使用它了。
配置
将刚刚得到的 kyestore.p12 文件复制到 Spring Boot 项目中的 resources 目录下,然后在 application.properties 文件中添加:
1 | server.port=8443 |
本地测试
在本地测试时,如果通过 https://127.0.0.1:8443 访问,会提示不安全:
因为刚才的证书是属于 ddllzz.xyz 这个域名的,但是现在并非通过这个域名访问,所以会提示不安全。
现在修改本机 hosts 文件,添加一行:
1 | 127.0.0.1 ddllzz.xyz |
再次通过 https://ddllzz.xyz:8443 访问就行了:
80 端口重定向到 HTTPS
在 Spring Boot 中使用下面这段代码,就可以实现:
当访问 ddllzz.xyz 时跳转到 https://ddllzz.xyz:8443。
它存在的意义是:别人可能并不知道你 HTTPS 设置的端口,如果没有这个重定向就无法通过 HTTPS 的方式访问了。
当然了,设置其他端口重定向到 HTTPS 也是可以的。
1 |
|
参考资料
Spring Boot Application Secured by Let’s Encrypt Certificate
Spring Boot Secured By Let’s Encrypt
redirect http to https in Spring boot 2.0.0 M2
总结
终于写完了,写了好几个小时。
比上午第一次弄还要久,不过总算是搞定了,下次再弄应该就不会那么费劲了。