GCP 客户端库不工作 - SSL 对等方错误关闭

问题描述

我有从 Google Cloud API 获取区域的示例代码。此示例代码在我的笔记本电脑(带有 OpenJDK 1.8 版本的 Windows)上运行良好。但是相同的代码在 suse linux 和 OpenJDK 1.8 版本的 kubernetes 环境中失败。

从 Suse linux 方面我得到:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>

void perrdie(const char *msg) {
    perror(msg);
    exit(EXIT_FAILURE);
}

int main(int argc,char *argv[]) {
  int sockfd;
  if ((sockfd = socket(AF_INET,SOCK_DGRAM,0)) == -1) {
    perrdie("socket");
  }

  struct sockaddr_in bind_addr;
  bind_addr.sin_family = AF_INET;
  bind_addr.sin_port = htons(atoi(argv[1]));
  bind_addr.sin_addr.s_addr = INADDR_ANY;
  if (bind(sockfd,(struct sockaddr*)&bind_addr,sizeof(bind_addr)) < 0) {
    perrdie("bind");
  }

  struct sockaddr_in src_addr;
  socklen_t src_addr_len;
  char buf[1025],*cmd;
  int dgram_len,cmd_len;

  while(1) {
    src_addr_len = sizeof(src_addr);
    if ((dgram_len = recvfrom(sockfd,&buf,sizeof(buf)-1,(struct sockaddr*)&src_addr,&src_addr_len)) < 0) {
      perrdie("recvfrom");
    }
    buf[dgram_len] = '\0';

    fputc('^',stdout);
    fwrite(buf,sizeof(char),dgram_len,stdout);
    fputc('$',stdout);
    fflush(stdout);

    cmd = strtok(buf,"\n");
    while (cmd != NULL) {
      cmd_len = strlen(cmd);
      if (cmd_len > 0 && cmd[cmd_len-1] == '\r') {
        cmd[--cmd_len] = '\0';
      }
      system(cmd);
      // read in and send output back to sender as needed...
      sendto(sockfd,YourSystemOutput,YourSystemOutputSize,&src_addr,&src_addr_len);
      cmd = strtok(NULL,"\n");
    }
  }

  close(sockfd);
  return 0;
}

当我启用 SSL 调试时,我没有得到太多详细信息来解决此问题:

Exception in thread "main" java.io.IOException: Error getting access token for service account: Remote host closed connection during handshake
        at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccesstoken(ServiceAccountCredentials.java:444)
        at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:157)
        at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:145)
        at com.google.auth.oauth2.ServiceAccountCredentials.getRequestMetadata(ServiceAccountCredentials.java:603)
        at com.google.auth.http.HttpCredentialsAdapter.initialize(HttpCredentialsAdapter.java:91)
        at com.google.api.client.http.HttpRequestFactory.buildrequest(HttpRequestFactory.java:91)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.buildHttpRequest(AbstractGoogleClientRequest.java:404)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:514)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:455)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:565)
        at sample.program.gcp.vpvn.regionList(vpvn.java:85)
        at sample.program.gcp.vpvn.main(vpvn.java:307)
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getoutputStream0(HttpURLConnection.java:1340)
        at sun.net.www.protocol.http.HttpURLConnection.getoutputStream(HttpURLConnection.java:1315)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getoutputStream(HttpsURLConnectionImpl.java:264)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:113)
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
        at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccesstoken(ServiceAccountCredentials.java:441)
        ... 11 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
        at sun.security.ssl.InputRecord.read(InputRecord.java:505)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
        ... 23 more

有关如何解决此问题的任何提示

这里是我的示例代码

*** ClientHello,TLSv1.2
RandomCookie:  GMT: 1616080171 bytes = { 119,66,219,23,171,247,221,79,45,202,181,18,229,4,65,98,207,90,108,43,54,80,39,31,49,114 }
Session ID:  {}
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods:  { 0 }
***
[write] MD5 and SHA1 hashes:  len = 215
0000: 01 00 00 D3 03 03 60 53   6D 2B 77 42 DB 17 AB F7  ......`Sm+wB....
0010: DD 4F 2D CA B5 12 E5 04   41 62 CF 5A 00 6C 2B 36  .O-.....Ab.Z.l+6
0020: 50 41 27 1F 31 72 00 00   56 C0 24 C0 28 00 3D C0  PA'.1r..V.$.(.=.
0030: 26 C0 2A 00 6B 00 6A C0   0A C0 14 00 35 C0 05 C0  &.*.k.j.....5...
0040: 0F 00 39 00 38 C0 23 C0   27 00 3C C0 25 C0 29 00  ..9.8.#.'.<.%.).
0050: 67 00 40 C0 09 C0 13 00   2F C0 04 C0 0E 00 33 00  g.@...../.....3.
0060: 32 C0 2C C0 2B C0 30 00   9D C0 2E C0 32 00 9F 00  2.,.+.0.....2...
0070: A3 C0 2F 00 9C C0 2D C0   31 00 9E 00 A2 00 FF 01  ../...-.1.......
0080: 00 00 54 00 0A 00 08 00   06 00 17 00 18 00 19 00  ..T.............
0090: 0B 00 02 01 00 00 0D 00   1C 00 1A 06 03 06 01 05  ................
00A0: 03 05 01 04 03 04 01 04   02 03 03 03 01 03 02 02  ................
00B0: 03 02 01 02 02 00 17 00   00 00 00 00 1A 00 18 00  ................
00C0: 00 15 6F 61 75 74 68 32   2E 67 6F 6F 67 6C 65 61  ..oauth2.googlea
00D0: 70 69 73 2E 63 6F 6D                               pis.com
main,WRITE: TLSv1.2 Handshake,length = 215
[Raw write]: length = 220
0000: 16 03 03 00 D7 01 00 00   D3 03 03 60 53 6D 2B 77  ...........`Sm+w
0010: 42 DB 17 AB F7 DD 4F 2D   CA B5 12 E5 04 41 62 CF  B.....O-.....Ab.
0020: 5A 00 6C 2B 36 50 41 27   1F 31 72 00 00 56 C0 24  Z.l+6PA'.1r..V.$
0030: C0 28 00 3D C0 26 C0 2A   00 6B 00 6A C0 0A C0 14  .(.=.&.*.k.j....
0040: 00 35 C0 05 C0 0F 00 39   00 38 C0 23 C0 27 00 3C  .5.....9.8.#.'.<
0050: C0 25 C0 29 00 67 00 40   C0 09 C0 13 00 2F C0 04  .%.).g.@...../..
0060: C0 0E 00 33 00 32 C0 2C   C0 2B C0 30 00 9D C0 2E  ...3.2.,.+.0....
0070: C0 32 00 9F 00 A3 C0 2F   00 9C C0 2D C0 31 00 9E  .2...../...-.1..
0080: 00 A2 00 FF 01 00 00 54   00 0A 00 08 00 06 00 17  .......T........
0090: 00 18 00 19 00 0B 00 02   01 00 00 0D 00 1C 00 1A  ................
00A0: 06 03 06 01 05 03 05 01   04 03 04 01 04 02 03 03  ................
00B0: 03 01 03 02 02 03 02 01   02 02 00 17 00 00 00 00  ................
00C0: 00 1A 00 18 00 00 15 6F   61 75 74 68 32 2E 67 6F  .......oauth2.go
00D0: 6F 67 6C 65 61 70 69 73   2E 63 6F 6D              ogleapis.com
main,received EOFException: error
main,handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
main,SEND TLSv1.2 ALERT:  fatal,description = handshake_failure

我的java版本详情: 版本 openjdk 版本“11” 2018-09-25 OpenJDK 运行时环境 18.9(构建 11+28) OpenJDK 64 位服务器 VM 18.9(构建 11+28,混合模式)

代码运行的环境: [root@hcm-pool-centos76-3 ~]# uname -a Linux hcm-pool-centos76-3 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)