最近要在项目里配https,百度了半天总是端口被占用,不论怎么改端口都是被占用,,后来发现是证书位置放的不对。
第一步:在桌面创建文件夹,在文件夹里按Shift+右键,选择“在此处打开命令窗口”
第二步:在窗口输入:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
会在再文件夹生成一个证书
第三步:在项目application.yml里面配置ssl
server: port: 8080 max-http-header-size: 102400 ssl: key-store: keystore.p12 key-store-password: 123456 keyStoreType: JKS enabled: true
port 是端口号
key-store 是证书路径
key-store 是证书密码
然后把你生成的keystore.p12文件放在项目的根目录,我原来的证书是放在resources下,在yml里路径写的是
key-store: classpath:keystore.p12被提示端口占用。
最后启动项目,输入url就可以啦。
如果想配置http跳转https把这几行代码放在启动类就行了
@Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint constraint = new SecurityConstraint(); constraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); constraint.addCollection(collection); context.addConstraint(constraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); //Connector监听的http的默认端口号 connector.setPort(80); connector.setSecure(false); //监听到http的端口号后转向到的https的端口号,也就是项目配置的port connector.setRedirectPort(8080); return connector; }
配置好之后重启,直接输入localhost就自动跳转成https带8080的地址了。