小编use*_*806的帖子

Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException:收到致命警报:unknown_ca

我有一个 Spring Boot 应用程序,我试图从中连接到 AWS RDS 上的 MySQL。但是我遇到以下错误的问题:

localhost-startStop-1, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
Run Code Online (Sandbox Code Playgroud)

为 ssl 握手启用调试后,我看到该CertificateRequest步骤Cert Authorities:为空。根据我的理解,这是客户端(spring boot 应用程序)需要向服务器(mysql db)提交证书的部分。

  • Certificate Request 步骤 - 服务器将从客户端发出证书请求。
  • 下一步是*** Certificate chain,这是客户端发送到服务器的证书。在这种情况下,对我来说,它正在发送keyStore_cert.jks.

到目前为止我认为的问题: 服务器(mySQL db)不知道客户端(我的应用程序)正在发送的这个证书(我的 keyStore_cert.jks)。但是,我的印象是除非您REQUIRE X509为用户设置,否则不需要客户端证书。

问题:

  • 为了找到确切的问题,我还有什么可以查看的吗?
  • 如果是以上问题,我该如何解决?如何禁用客户端验证?
  • 或者我怎样才能保持客户验证但让它起作用?
  • 我需要在keyStore_cert.jks/ 中添加任何内容trustStore_cert.jks吗?


这些是我的设置和我尝试过的。

  • RDS 引擎版本:5.7.22
  • mysql-connector-java v8.0.13
  • 连接网址: jdbc:mysql://<host>:<port>/<db_name>?useLegacyDatetimeCode=false&verifyServerCertificate=true&useSSL=true&requireSSL=true
  • 对于我正在使用的用户,我在数据库上执行了以下操作:
ALTER USER '<my_db_user>'@'%' require SSL;
GRANT USAGE ON <db_name>.* TO '<my_db_user>'@'%' REQUIRE …
Run Code Online (Sandbox Code Playgroud)

java mysql ssl amazon-rds spring-boot

5
推荐指数
1
解决办法
3406
查看次数

将Java中的String转换为VARCHAR IN SQL

我正在尝试用Java编写PL/SQL.我想将一个参数作为String传递,但在SQL过程中它是一个VARCHAR(140).但是,当我运行程序时,它给我一个错误,我不明白为什么?

这是我的SQL程序:

CREATE OR REPLACE PROCEDURE task1
 (input_tweet_id IN integer, input_user_id IN integer, input_time IN timestamp, input_tweet IN varchar(140))
is
begin
    INSERT INTO tweet(tweetid, userid, publishtime, tweet)
    VALUES (input_tweet_id,input_user_id,input_time,input_tweet);
END;
Run Code Online (Sandbox Code Playgroud)

Java调用:

    int in_tweet_id = 0;
    int in_user_id = 0;
    Timestamp in_time =null;
    String in_tweet ="";

 Connection conn = DriverManager.getConnection (connStr, uname, passwd);
 CallableStatement cstmt = conn.prepareCall("{? = call task1(?, ?)}");
       // cstmt.registerOutParameter (1, oracle.jdbc.OracleTypes.CURSOR);
        cstmt.setInt(1, in_tweet_id);
        cstmt.setInt(2, in_user_id);
        cstmt.setTimestamp(3,in_time);
        cstmt.setString(4,in_tweet);
Run Code Online (Sandbox Code Playgroud)

错误:

 at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
        at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
        at …
Run Code Online (Sandbox Code Playgroud)

java sql database plsql

2
推荐指数
1
解决办法
3227
查看次数

标签 统计

java ×2

amazon-rds ×1

database ×1

mysql ×1

plsql ×1

spring-boot ×1

sql ×1

ssl ×1