首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring-native创建docker镜像时出现CA错误

使用spring-native创建docker镜像时出现CA错误
EN

Stack Overflow用户
提问于 2021-11-05 11:26:18
回答 1查看 163关注 0票数 0

我正在尝试使用spring-native创建我的第一个“原生java应用程序”。我修改了我的pom,添加了以下内容

代码语言:javascript
复制
<dependency>
        <groupId>org.springframework.experimental</groupId>
        <artifactId>spring-native</artifactId>
        <version>0.10.5</version>
    </dependency>

还有这个(在插件部分)

代码语言:javascript
复制
       <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <image>
                    <builder>paketobuildpacks/builder:tiny</builder>
                    <env>
                        <BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
                    </env>
                </image>
            </configuration>
        </plugin>

如果我运行"mvn clean package“,一切正常;但当我尝试"spring-boot:build-image”时,我得到这个错误(图片中看不到的部分显示"x509:由未知机构签署的证书“):

我已经尝试向intellij添加站点的证书(如下图所示),但我得到了相同的错误。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-05 16:48:31

https://github.com/graalvm/graalvm-ce-builds/releases下载的尝试发生在运行Cloud Native buildpacks构建器和构建包的Docker容器中。当Docker容器位于使用自定义CA证书的公司HTTP代理之后时,可能会发生这样的证书错误。有一个Paketo buildpacks issue和一个Spring Boot issue覆盖了类似的错误。

将证书添加到JDK信任存储区不会解决此问题。启动构建器容器时,必须向其提供证书。这在Paketo documentationSpring Boot documentation中都有介绍,但是很难准确地理解如何配置证书。

举个例子:

首先,在项目结构的根目录(与项目src目录同级)中创建一个bindings目录,并将自定义证书复制到该目录(其中my-custom-certificate.crt是PEM格式的CA证书):

代码语言:javascript
复制
$ mkdir -p bindings/certificates
$ echo "ca-certificates" > bindings/certificates/type
$ cp /some/path/to/my-custom-certificate.crt bindings/certificates/my-custom-certificate.crt
$ tree bindings
bindings
├── certificates
│   ├── my-custom-certificate.crt
│   └── type

然后配置Spring Boot Maven插件,以便在构建镜像时提供到Paketo CNB构建器的绑定:

代码语言:javascript
复制
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
      <image>
        <builder>paketobuildpacks/builder:tiny</builder>
        <env>
          <BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
        </env>
        <bindings>
          <binding>${basedir}/bindings/certificates:/platform/bindings/ca-certificates</binding>
        </bindings>
      </image>
    </configuration>
  </plugin>

请注意,Spring Boot Maven插件的bindings配置需要Spring Boot版本2.5.0或更高版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69852529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档