我正在尝试使用spring-native创建我的第一个“原生java应用程序”。我修改了我的pom,添加了以下内容
<dependency>
<groupId>org.springframework.experimental</groupId>
<artifactId>spring-native</artifactId>
<version>0.10.5</version>
</dependency>还有这个(在插件部分)
<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添加站点的证书(如下图所示),但我得到了相同的错误。

有什么建议吗?
发布于 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 documentation和Spring Boot documentation中都有介绍,但是很难准确地理解如何配置证书。
举个例子:
首先,在项目结构的根目录(与项目src目录同级)中创建一个bindings目录,并将自定义证书复制到该目录(其中my-custom-certificate.crt是PEM格式的CA证书):
$ 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构建器的绑定:
<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或更高版本。
https://stackoverflow.com/questions/69852529
复制相似问题