gpt4 book ai didi

java - 为什么 Kubernetes 需要更新 cacerts

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:27 27 4
gpt4 key购买 nike

当从 GKE 或 GCE 中运行的容器内的 Google 存储桶读取文件时。以下代码失败:

public String readSmallTextFileFromBucket(String bucketName, String textFile) {

Blob blob = storage.get(bucketName, textFile);
String fileContent = new String(blob.getContent());
return fileContent;
}

出现错误:

com.google.cloud.storage.StorageException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

如果我将下载 OpenJDK 时获得的默认 java/jdk-10.0.2/lib/security/cacerts 文件替换为我桌面上的文件,则上面的代码可以正常工作。

这是为什么呢?使 Java API 从容器内的存储桶中读取数据的正确方法是什么?

最佳答案

默认情况下,许多基础容器镜像可能不包含通常安装在每台计算机上的 CA 证书。 (因为不是每个人都需要在容器中使用 TLS。)您通常需要在 Dockerfile 中使用“apt-get install”或类似命令来安装这些证书。

如果容器中没有 CA 证书,您的代码将无法信任 storage.googleapis.com。

请参阅此答案中将 CA 证书添加到容器所需的命令:https://superuser.com/a/633853/35769理想情况下,您不应从台式计算机复制这些证书。

关于java - 为什么 Kubernetes 需要更新 cacerts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com