Java Kubernetes client SSLHandshakeException extension (5) 不应该以certificate_request

2022-09-02 02:24:50

当我尝试在本地运行一个 Java Kubernetes 客户端应用程序时,我得到“扩展 (5) 不应该在certificate_request中呈现”,该应用程序通过 lube 代理连接查询 Kubernetes 集群。有什么想法吗?提前致谢

  ApiClient client = null;
    try {
        client = Config.defaultClient();
        //client.setVerifyingSsl(false);
    } catch (IOException e) {
        e.printStackTrace();
    }
    Configuration.setDefaultApiClient(client);

    CoreV1Api api = new CoreV1Api();
    V1PodList list = null;
    try {
        list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
    } catch (ApiException e) {
        e.printStackTrace();
    }
    for (V1Pod item : list.getItems()) {
        System.out.println(item.getMetadata().getName());
    }

答案 1

您使用的是哪个版本的 Java?

JDK 11 及更高版本支持 TLS 1.3,这可能会导致错误。extension (5) should not be presented in certificate_request

添加到 JVM 参数以使其改用。-Djdk.tls.client.protocols=TLSv1.21.2

Go lang上有一个与此 https://github.com/golang/go/issues/35722 有关的问题,并且有人还发布了在Java端禁用TLS 1.3的帖子。


答案 2

或者,将 JDK 升级到更新的版本以修复问题。

具有此修复程序的一些最小版本是:openjdk8u272,11.0.7,14.0.2


推荐