雪花 jdbc 中的 secretkeyfactory 不可用错误

Posted

技术标签:

【中文标题】雪花 jdbc 中的 secretkeyfactory 不可用错误【英文标题】:secretkeyfactory not available error in snowflake jdbc 【发布时间】:2021-12-10 10:50:08 【问题描述】:

我正在使用 snowflake-jdbc 连接到雪花数据库

下面是图书馆

<!-- https://mvnrepository.com/artifact/net.snowflake/snowflake-jdbc -->
<dependency>
    <groupId>net.snowflake</groupId>
    <artifactId>snowflake-jdbc</artifactId>
    <version>3.13.11</version>
</dependency>

驱动属性设置如下。

 String url = "jdbc:snowflake://<account_identifier>.snowflakecomputing.com";
    Properties prop = new Properties();
    prop.put("user", "<user>");
    props.put("private_key_file", "/tmp/rsa_key.p8");
    props.put("private_key_file_pwd", "dummyPassword");
    prop.put("db", "<database_name>");
    prop.put("schema", "<schema_name>");
    prop.put("warehouse", "<warehouse_name>");
    prop.put("role", "<role_name>");

    Connection conn = DriverManager.getConnection(url, prop);
    Statement stat = conn.createStatement();
    ResultSet res = stat.executeQuery("select 1");
    res.next();
    System.out.println(res.getString(1));
    conn.close();

当我在本地 PC 上进行测试时,我能够建立连接,但是当我部署在 AWS ECS(docker) 上时,当我尝试建立连接时出现以下错误

提供的私钥无效或不支持 1.2.840.113549.1.5.13 secretkeyfactory not available 我检查了所有路径,确认指定路径中有private_key文件。

配置中是否缺少任何内容?

【问题讨论】:

【参考方案1】:

使用密钥对身份验证进行身份验证时,使用 OpenSSL 1.1.1g 生成的私钥并通过 JDBC 驱动程序连接到 Snowflake,会出现 -Private-key-provided-is-invalid-or-not- 类型的错误看到supported-rsa-key-p8。本文旨在为这个问题提供解决方法

https://community.snowflake.com/s/article/Private-key-provided-is-invalid-or-not-supported-rsa-key-p8--data-isn-t-an-object-ID

【讨论】:

以上是关于雪花 jdbc 中的 secretkeyfactory 不可用错误的主要内容,如果未能解决你的问题,请参考以下文章

使用雪花 JDBC 驱动程序自定义接收器到雪花非常慢

从 Spark 到雪花的连接

使用 JDBC 将数据插入雪花

为啥雪花 jdbc 会抛出 [XX000][200001] 错误

雪花 jdbc 参数为所有数据类型返回 VARCHAR

通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据