配置springboot支持https访问

tech2025-06-08  8

第一步:证书申请(使用jdk方式免费申请,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

第二步:设置密码————>将生成的文件复制到项目的resources目录下

第三步:在springboot应用的配置文件中增加ssl配置

# properties方式 # https端口号. server.port = 443 # 证书的路径. server.ssl.key-store = classpath:keystore.p12 # 证书密码,请修改为您自己证书的密码. server.ssl.key-store-password = 123456 # 秘钥库类型 server.ssl.key-store-type = PKCS12 # 证书别名 server.ssl.key-alias = tomcat # yml方式 server: port: 443 ssl: key-store: classpath:keystore.p12 key-store-password: 123456 key-store-type: PKCS12 key-alias: tomcat

第四步:启动类加两个Bean

@Bean public Connector connector(){ Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); connector.setSecure(false); 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; }

第五步:写一个测试controller

第六步:启动项目(端口占用错误请看下面的解决方案)

 

端口占用解决方案:

再打开任务管理器找到PID是刚刚查到的PID的进程或服务,结束掉。

最后测试:

测试结果:可以正常访问页面,http请求重定向到https。

最新回复(0)