若依框架微服务、springBoot同时支持http和https访问、域名SSL配置方法

需求:前端页面访问后台需要用http,小程序访问后台需要用https,且两个端口配置不一样。

一:配置SSL方法
1,将申请的域名文件放到网关服务的resources目录下,可创建子目录,如图:

要注意看文件大小,确保不是空的。否则会加载失败。

2,在bootstrap.yml里配置SSL:

http:
# 服务器的HTTP端口
  port: 8080
server:
  # 服务器的HTTPS端口
  port: 9090 #默认是443,在此自定义9090示例。
  ssl:
    enabled: true
    key-store: classpath:keystore/test.webtest.com.jks # 或 .pfx文件
    key-store-password: 123456 # 域名密钥
    key-store-type: JKS # 或 PKCS12

配置完成如图:

到这没结束,这时候原来的http访问的8080端口不能用了。

二:增加配置类

之前使用各种tomcat配置一团糟,走了很多弯路,后来查看log才发现gateway用的netty,就不能再引入tomcat相关的依赖,否则影响启动。

 在启动类所在目录下创建config,并在底部增加配置类(以下代码可直接复制):

package com.zhonghui.gateway.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.reactive.HttpHandler;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * @ClassName: HttpServer
 * @Description: 配置http服务,使其即支持http又支持https服务(https通过配置文件配置)
 */

@Configuration
@Slf4j
public class HttpServer {

    @Autowired
    private HttpHandler httpHandler;

    private WebServer webServer;

    @Value("${http.port}")
    private Integer httpPort;

    @PostConstruct
    public void start() {
        log.info("加载http端口--------------------------"+httpPort);
        NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(httpPort);
        WebServer webServer = factory.getWebServer(httpHandler);
        webServer.start();
    }

    @PreDestroy
    public void stop() {
        webServer.stop();
    }
}

清缓存,重启后可访问域名+接口测试。 如果是在linux系统,也可以输入指令测试两个端口是否都已经监听:

netstat -tuln | grep -E '8080|9090'

如果两个端口都显示LISTEN,则说明配置成功。如图:

Spring Boot中,可以通过以下步骤来配置SSL同时支持HTTPHTTPS: 1. 生成SSL证书密钥 可以使用Java Keytool工具生成SSL证书密钥。以下是一个示例命令: ``` keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -validity 3650 ``` 其中,mydomain是证书别名,keystore.jks是密钥库文件名,-validity表示证书有效期为3650天。 2. 在application.properties文件中配置SSL 在application.properties文件中添加以下配置: ``` server.port=8443 server.ssl.key-store=classpath:keystore.jks server.ssl.key-store-password=changeit server.ssl.key-password=changeit server.ssl.key-alias=mydomain ``` 其中,server.port指定HTTPS端口号,server.ssl.key-store指定密钥库文件路径,server.ssl.key-store-password指定密钥库密码,server.ssl.key-password指定证书密码,server.ssl.key-alias指定证书别名。 3. 配置HTTP重定向到HTTPS配置文件中添加以下配置: ``` server.port=8080 server.ssl.enabled=true server.ssl.redirectHttp=true ``` 其中,server.port指定HTTP端口号,server.ssl.enabled=true启用SSL,server.ssl.redirectHttp=true配置HTTP重定向到HTTPS。 4. 运行应用程序 现在可以运行应用程序,并通过https://localhost:8443访问应用程序。如果尝试访问http://localhost:8080,应该会自动重定向到https://localhost:8443。 总结: 通过以上步骤,可以配置Spring Boot应用程序来同时支持HTTPHTTPS。可以使用SSL证书密钥来提供安全性,同时使用HTTP重定向到HTTPS来提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的提提

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值