SprignBoot-Https安全访问

Https安全访问:

需要资源:

  1. 准备一个SpringBoot项目,可以本地访问即可
  2. 准备一个证书,这里可以通过jdk的证书生成工具

springBoot整合Https安全访问:

  1. 使用jdk工具keytool生成证书
keytool -genkeypair -alias bootserverkeystore -keyalg RSA -keysize 2048 -keystore keystore.jsk -storetype JKS -validity 3650 -storepass 123456 -keypass 654321

在这里插入图片描述
2. 将证书放到resource目录下
在这里插入图片描述
3. 编辑配置文件application.yml

server:
 servlet:
   context-path: /
 port: 8080 # https端口设置8080,默认443
 ssl:
   key-store: classpath:keystore.jsk # keystore配置文件路径
   key-store-type: JKS  # keystore类型
   key-alias: bootserverkeystore   # 设置的别名
   key-password: 654321  # 访问密码
   key-store-password: 123456
   enabled: true
  1. 此时就可以实现https的访问
  2. 如果想要http跳转到https,则需要添加配置类
@Configuration
public class HttpConnectorConfig {
   @Bean
   public Connector initConnector() {
       Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
       connector.setScheme("http");//如果现在用户使用普通的http方式进行访问
       connector.setPort(80);//用户访问的是80端口
       connector.setSecure(false);//如果该连接为跳转,则表示不是一个新的连接对象
       connector.setRedirectPort(8080);//设置转发操作端口
       return connector;
   }

   @Bean
   public TomcatServletWebServerFactory servletContainerFactory(Connector connector) {
       TomcatServletWebServerFactory serverFactory = 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);
           }
       };
       serverFactory.addAdditionalTomcatConnectors(connector);
       return serverFactory;
   }
}
  1. 此时重启项目,如果使用http://localhost/map访问,则会跳转到https://localhost:8080/map

tomcat整合Https安全访问:

之前的配置不变,需要在tomcat的server.xml添加

<Connector
    		port="8080"
    		protocol="org.apache.coyote.http11.Http11NioProtocol"
    		SSLEnabled="true"
    		scheme="https"
    		secure="true"
    		clientAuth="false"
    		keystoreFile="F:\keystore.jsk"
    		keystorePass="123456"
    		keyAlias="bootserverkeystore"
    		keyPass="654321" />

这样两边都能访问,但是不能由http跳转到https,有没有大神指导下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值