gpt4 book ai didi

ssl - 使用 SSL 访问 RDS - 不支持的记录版本 Unknown-0.0

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:05 25 4
gpt4 key购买 nike

我正在使用 Amazon RDS MySQL 并使用 SSL 证书(默认证书位于 http://s3.amazonaws.com/rds-downloads/mysql-ssl-ca-cert.pem )连接,我正在执行以下步骤:

  1. 下载mysql-ssl-ca-cert.pem
  2. 修改以上文件为JKS格式
  3. 并通过 Spring - Hibernate 模板 (org.springframework.beans.factory.config.PropertyPlaceholderConfigurer) 从 Web 应用程序连接,还使用 ​​c3p0,我们将额外的 URL 参数设置为 jdbc:URL/DB?autoReconnect=true&useUniCode=true&characterEncoding=UTF-8&useSSL=true&verifyServerCertificate=false&requireSSL=true

但我面临以下问题......

javax.net.ssl.SSLException: Unsupported record version Unknown-0.0

我该如何解决这个问题?

最佳答案

基本上这意味着 SSL 解析器丢失了。套接字层向它传递了一些不符合 SSL 协议(protocol)的字节。

当您使用 SSL 套接字传输时,它会调用格式化和加密例程来创建加密数据包。然后它调用普通套接字层将加密数据包传输到服务器。服务器的套接字层接收数据包,然后调用 SSL 包对数据包进行解密。如果数据包不符合 SSL 格式,则会出现不支持版本异常。

所有到达套接字层的字节都被发送到 SSL 包。因此,获得该错误的最简单方法是在建立 SSL 连接后使用纯套接字层传输纯文本消息。

在我的特殊情况下,我遇到了这个错误消息,因为我正在传输额外的字节。让我们看看我能否清楚地解释我的错误。

我有一个(例如)100 字节的缓冲区。我用我的 50 字节消息打包缓冲区并调用 SSL 加密例程。生成的数据包长 75 个字节。我调用了 send() 来传输缓冲区。这是一个普通的套接字发送;它按照我的指示进行操作,即传输整个 100 字节的缓冲区。

在服务器上,收到了全部 100 个字节。 SSL 包试图解密数据包。它发现一个非常好的 SSL 消息被打包到接收到的前 75 个字节中。到目前为止,一切都很好。然后它试图找出剩余的 25 个字节的含义。它断言这是第二条 SSL 消息并试图对其进行解密。就在那时它窒息并踢出了那个令人讨厌的异常。

我希望这能为您提供一些线索,让您知道要在代码中寻找什么。

关于ssl - 使用 SSL 访问 RDS - 不支持的记录版本 Unknown-0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472256/

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