我已经尝试使用最新版本的启动应用程序,想让其余的 api ssl 安全,我在下面做了 创建 keystore 并放入项目类路径,服务器启动,启动没有问题,但无法发送请求 8080 或 8443,下面是配置,
server.ssl.key-store=KeyStore.p12 server.ssl.key-store-password=shashank server.ssl.key-alias=mydomain server.ssl.key-password=shashank
@Bean public TomcatServletWebServerFactory 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(getHttpConnector()); return tomcat; } private Connector getHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("https"); connector.setPort(8080); connector.setSecure(true); connector.setRedirectPort(8443); }
INFO 84898 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s):enter image description here 8443 (https) 8080 (https) with context path '/event-processing'
因为这是自签名证书,上面写着“此证书未经第三方验证”
这里的目的是让 https 到所有 rest api 的 enter image description here
最佳答案
尝试这些改变:
修改application.properties
,将server.ssl.key-store
参数值从KeyStore.p12修改为
keystore.p12
server.ssl.key-store: keystore.p12
将 TomcatEmbeddedServletContainerFactory bean 添加到 @Configuration 类(任何一个)。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@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;
}
private Connector initiateHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
关于java - Spring Boot SSL已配置,服务器已启动但无法连接到端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53879453/