java - Spring Boot SSL已配置,服务器已启动但无法连接到端口

标签 java spring-boot ssl tomcat

我已经尝试使用最新版本的启动应用程序,想让其余的 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/

相关文章:

java - 我正在尝试返回 x 和 y 值以在游戏中设置实体生成。我在这里缺少什么?

java - C 中变量和指针的区别(针对 Java 开发人员)?

java - Spring Security 6.x 正在保护所有端点,尽管配置告诉它不要这样做

java - SpringBoot BeanCreationException : Error creating bean with name 'requestMappingHandlerAdapter' Caused by: java. lang.NoSuchFieldError: defaultInstance

amazon-web-services - 在 S3 上使用 https 托管 SPA 或静态网站的最便宜方式

ssl - 如何将cer文件导入jks文件

linux - 在我的 Linux 主板上监听多个端口或启用 SSL 模块后 HTTP 请求失败

java - 检查给定 UUID 的节点是否存在

java - 扩展实现某些包含泛型的类的 ArrayList 不起作用?

java - Spring Boot 1.3 使用模拟嵌套 Bean 进行测试