Java_springboot_配置HTTPS访问

文章目录

  • CA证书
  • 自签名证书

CA证书

自签名证书

生成证书

配置好Java环境,在cmd控制台内获取签名文件,文件保存在用户文件根目录下

keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365

配置证书

  1. 将签名文件添加到resources文件夹下
  2. 在sprintboot配置文件里,配置签名文件信息如下
#证书的路径.
server.ssl.key-store=src/main/resources/keystore.p12
#证书密码,请修改为您自己证书的密码.
server.ssl.key-store-password=123456
#秘钥库类型
server.ssl.keyStoreType=PKCS12
#证书别名
server.ssl.keyAlias=tomcat

编写控制器

@RestController
@RequestMapping(value = "test")
public class TestController {
    @GetMapping(value = "getData")
    String getData() {
        return "测试HTTPS";
    }
}

启动

  • 采取HTTP访问如下,显然已经无法使用HTTP访问了
    在这里插入图片描述
  • 采取HTTPS访问如下,会出现一个警告提示,这种情况是自签名才出现的,如果采取的CA证书,不会出现下面的警告
    Java_springboot_配置HTTPS访问_第1张图片

配置HTTP访问

配置文件如下

/**
 * http://192.168.1.127:8081/test/getData
 * 上URL经过此类转下URL
 * https://192.168.1.127:8080/test/getData
 * 

* 实现HTTP访问,自动跳转HTTPS访问 */ @Configuration public class HttpConfig { @Bean public Connector connector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); //HTTP端口 connector.setPort(8081); connector.setSecure(false); //HTTPS端口号 connector.setRedirectPort(8080); 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)