如果spring boot没有配置ssl,且linux开放了端口 那么将报错
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
首先到腾讯云申请证书,然后下载,也可以用别的方式
把*.jks文件放到boot项目的resources目录下
配置yml文件
server:
port: 443
ssl:
key-store: classpath:文件名.jks
key-store-password: 密码
key-store-type: JKS
enabled: true
启动类加如下配置
@Bean
public ServletWebServerFactory servletContainer() {
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(initiateHttpConnector());
return tomcat;
}
@Bean
public Connector initiateHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080); // http端口
connector.setSecure(false);
connector.setRedirectPort(443); // application.properties中配置的https端口
return connector;
}
重新部署到docker,问题解决
docker run --network=host boot:1.1
docker run -p 80:8080 -p 443:443 boot:1.1