Https安全访问:
需要资源:
- 准备一个SpringBoot项目,可以本地访问即可
- 准备一个证书,这里可以通过jdk的证书生成工具
springBoot整合Https安全访问:
- 使用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
- 此时就可以实现https的访问
- 如果想要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;
}
}
- 此时重启项目,如果使用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,有没有大神指导下