修改application.yml配置
将原来的http改为https,application.yml配置文件中server添加相关的ssl配置
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8443 #原来是http的8080
connection-timeout: 5000ms
servlet:
context-path: /
ssl: #添加的ssl自签名证书
key-store: classpath:keystore.jks #注意路径要配置正确
key-store-password: lovespring
key-alias: lovespring
key-password: lovespring
http: # 新加一个http的端口号配置
port: 8080
注意,如果ssl配置不正确,SpringApplication启动后,会报端口号被占用,使用netstat -ano|findStr 8443
一看,还真有两个进程在使用tcp的8443端口 :(。其实是ssl配置不正确导致的,特地记录一下。
修改Application代码
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
// 如果要强制使用https,请松开以下注释
// SecurityConstraint constraint = new SecurityConstraint();
// constraint.setUserConstraint("CONFIDENTIAL");
// SecurityCollection collection = new SecurityCollection();
// collection.addPattern("/*");
// constraint.addCollection(collection);
// context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
return tomcat;
}
// 配置http
private Connector createStandardConnector() {
// 默认协议为org.apache.coyote.http11.Http11NioProtocol
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setSecure(false);
connector.setScheme("http");
connector.setPort(port);
connector.setRedirectPort(httpsPort); // 当http重定向到https时的https端口号
return connector;
}
@Value("${http.port}")
private Integer port;
@Value("${server.port}")
private Integer httpsPort;
注意,SpringBoot版本不一样,代码也不一样,主要是TomcatServletWebServerFactory 这个类是2.0.x才有的。其它版本可以在官方示例链接中切换分支版本查看。
参考
作者:Jamling
链接:https://www.jianshu.com/p/4ce077b15a2c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/xiadongqing
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。