当前位置: 首页 > 知识库问答 >
问题:

如何运行完全符合FIPS的Spring Boot应用程序

程钧
2023-03-14

我必须符合以下标准:

    null

这是一大堆问题,我知道。但基本上是如何运行一个完全符合FIPS的Spring Boot应用程序

共有1个答案

邓才
2023-03-14

前言#1:这里可以找到一些一般性的(但不完整的)说明。

前言#2:以下要求具有FIPS 140-2认证模块的OpenSSL。在Ubuntu上,这些仅适用于Ubuntu16.04上的“Ubuntu Advantage高级客户”!看这里和这里。

  • $sudo apt install libapr1 libapr1-dev(这里可能是sudo apt install libapr1-dev libssl-dev,请参见此处)
  • 从此处下载tomcat-native-1.2.23-src,解压缩,转到tomcat-native-1.2.23-src/native/
  • $。/configure--with-apr=/usr/bin/apr-1-config--with-java-home=/path/to/java-home/--with-ssl=yes
  • $make
  • -djava.library.path=/path/to/tomcat-native-1.2.23-src/native/.libs添加到jvm args
  • 将以下内容添加到项目中
import org.apache.catalina.core.AprLifecycleListener;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.Ssl;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AprConfig {

  @Bean
  public ServletWebServerFactory servletContainer() {
    TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
      @Override
      public Ssl getSsl() {
        // avoid "IllegalStateException: To use SSL, the connector's protocol handler must be an AbstractHttp11JsseProtocol subclass":
        return null;
      }
    };

    // enable APR:
    factory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");

    AprLifecycleListener aprLifecycleListener = new AprLifecycleListener();

    // will throw "FIPS was not available to tcnative at build time. You will need to re-build tcnative against an OpenSSL with FIPS." with default OpenSSL:
    aprLifecycleListener.setFIPSMode("on");

    factory.addContextLifecycleListeners(aprLifecycleListener);
    return factory;
  }
}

运行完全符合FIPS的Spring Boot应用程序需要

  • 某些配置(见上文)
  • 具有支持Java版本的FIPS兼容库的操作系统
 类似资料:
  • 我希望通过调用不同的服务来加载应用程序启动时的数据,这些服务返回不同对象类型的列表。每个服务调用DAO类来读取一些数据。因此,我创建了个人如: 并将它们结合起来,如: 如果我这样做: 然后我得到了编译时错误。我不熟悉Java 8的并发特性,例如,我认为调用将在不同的线程中运行每个。调用是否正确?如果是,那么如何删除编译时错误? 但是如果我做了这样的事情: 它正在返回

  • 我想在我的Java应用程序中实现SCP(安全复制)功能,将文件从SSH服务器复制到另一台机器。我的java应用程序必须符合FIPS,因此它使用SunPKCS11提供程序与底层NSS密钥数据库接口。 为了实现SCP功能,我们可以为Java使用以下任何SSH库: JSch公司 关于这些SSH库,我有以下问题: 上述任何图书馆是否经过FIPS认证 如果未通过FIPS认证,算法(密码、密钥交换、MAC等)

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我在我的项目中使用带有MongoDb和Elasticsearch的Springboot。当我的Elasticsearch服务器运行时,我的Springboot应用程序运行良好,但当Elasticsearch服务器停止时,我的Springboot应用程序也无法启动。根据我的项目要求,即使Elasticsearch服务器无法启动,我们的Springboot应用程序仍应运行,因为我们的大多数API都是基