点击蓝字
关注不迷途

背景
当面临着服务需要https协议时(如微信小程序请求后台接口),如何快速有效地搭建一个含https协议的服务接口?
准备
一台云服务器、一个备案的域名、申请的ssl证书、一个待部署的springboot项目。
行动
到云服务商处进行ssl证书申请。
第一步,找到ssl证书并进入。

第二步,选择单域名、DVSSL、免费版(当然有条件的可以上增强版,这里只是测试用),然后选择购买。

第三步,购买完成后,进入证书控制台进行证书申请。

第四步,填写申请信息以及证书绑定的域名,等待审核签发。

第五步,还是在证书控制台,选择对应的ssl证书栏目进行证书下载。

第六步,这里选择下载tomcat证书,具体情况看实际要使用的服务器软件。

至此,证书申请完成,接下来进行springboot的配置。
在进行springboot配置前,先解压下载的ssl证书文件,可以发现解压的文件夹内含有两个文件。
一个.pfx文件,将它复制到项目的resource目录下。
一个.txt文件,里面存放的是证书密码。
第一步,配置springboot的yml如下server.ssl,其中的key-store的属性值为pfx文件位置,这里是classpath:文件名,key-store-password的属性值是上面的证书密码;key-store-type的属性值填写PKCS12。

第二步,编写配置类配置http转https。

@Configuration
public class HttpsConfig {
@Bean
public Connector connector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
}
复制
至此,springboot的配置已经完成,打包jar部署到服务器运行就可以使用https协议访问了。
关于云服务器的配置只需要关注几点:
安全组配置:开放80,443以及其它需要的软件端口。
软件安装:MySQL、JDK、Redis等
# 安装openjdk1.8
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 配置环境变量
vim /etc/profile
export CLASS_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
# 使环境变量生效
source /etc/profile
# 安装MySQL
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server
# 获取MySQL的临时密码
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log
# 连接MySQL进行密码修改和授权远程连接
mysql -uroot -p
> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
# 安装Redis
sudo yum -y install redis
# 启动redis服务
sudo systemctl start redis
# 配置redis远程访问以及配置密码
vim /etc/redis.conf
#bind 127.0.0.1
requirepass 密码
# 重启服务使配置生效
sudo systemctl restart redis
复制
总结
永远保持对知识的好奇心,保持求知欲。

喜欢本篇内容顺便点个在看吧

文章转载自长夜难眠,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。