迫于课设,完成了对 LightBlog 的重构,使用 Spring Boot 和 SSM 框架,今晚突然想要支持一下 HTTPS(小绿锁)。

差不多折腾了一小时,现在使用的是下面这种方案(又不是不能用)。

SSL 证书

在阿里云买的域名,有赠送一年的免费SSL证书。

ssl cert

将证书上传到服务器里,我这里放在了/usr/local/ssl/下。

修改application.properties

1
2
3
4
5
server.port=8443
server.ssl.key-store=/usr/local/ssl/ssl.pfx
server.ssl.key-store-password=password
server.ssl.keyStoreType=PKCS12
server.ssl.enabled=true

打包 jar

1
2
3
bootJar {
    launchScript()
}

运行 Gradle 命令:gradle bootJar,会在 build/libs下生成 jar 包。

上传到服务器

1
scp lightblog-java-1.2-beta.jar root@yourserver:~/

启动 spring boot 应用

1
2
screen -S blog
java -jar lightblog-java-1.2-beta.jar

现在,网站运行在端口:8443,我们想要的是直接访问:https://lightblog.xyz。所以需要一个从 https://:8443https://lightblog.xyz 的映射。(HTTPS 默认端口:443)。

端口映射

我用的是firewall,也可以使用iptables

1
2
3
sudo apt install firewall
firewall-cmd --add-port=443/tcp
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8443

通过firewall,把所以在 443端口的请求转发到 8443

至此可爱的小绿锁终于出现了!!!

green_lock

参考

记一次Spring Boot项目部署,同时支持HTTP与HTTPS、80与443权限问题

阿里云centos7服务器关于80端口和443端口