微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server-不支持的密钥库提供程序MSSQL_JAVA_KEYSTORE

如何解决SQL Server-不支持的密钥库提供程序MSSQL_JAVA_KEYSTORE

我正在一个项目中,我们计划使用sql Server Always Encrypted对sql Server 2016数据库进行加密。客户端应用程序将通过兼容的jdbc驱动程序访问数据。

Microsoft文档说我可以将MSsql_JAVA_KEYSTORE用作密钥库提供程序。

  • 步骤1:我使用keytool命令创建了一个KeyPair,并且有一个jks文件

  • 步骤2:如下所示,我使用SSMS在sql Server中创建了列主键

    CREATE COLUMN MASTER KEY CMK_2
    WITH
        (KEY_STORE_PROVIDER_NAME = N'MSsql_JAVA_KEYSTORE',KEY_PATH = N'tp-7b679880-706e-47af-bcbe-e1cc3cc78690');
    

    其中KEY_PATH是我的keystore.jks文件中密钥的别名。

  • 步骤3:现在,我正在尝试使用SSMS向导创建列加密密钥,它会引发以下错误

    不受支持的密钥库提供程序类型:MSsql_JAVA_KEYSTORE。

对该错误感到困惑-根据Microsoft文档,MSsql_JAVA_KEYSTORE是内置的列主密钥库提供程序之一。

我在做什么错了?

解决方法

不幸的是,无法直接使用SSMS创建ECK。我希望将来微软能够解决这个问题。通过以下步骤,我已使用JBoss EAP 7.x将AE与Java应用程序结合使用:

  • 用于创建密钥的密钥工具。
  • 按照Microsoft SQL指南创建一个Java类,并在它之后进行EMK和ECK。
  • 创建引用此ECK的数据库表对象。
  • 在jdbc中,将密钥库及其密码和连接属性告知sql服务器。

重要:

  • MSSQL将无法处理数据库内部的crypt数据寄存器。它无法读取密钥库。
  • 您将需要创建另一个具有相同密钥库访问权限的类或Java应用程序,以便能够处理数据(CRUD)操作并对数据库中的寄存器进行故障排除。
  • 如果此AE密钥库公开,则所有数据可能都处于危险之中,请保持安全。

提示:使用DBeaver和Squirrel,我可以使用密钥库进行一些选择命令,并正常进行更改和表结构。但是插入,不更新,仅使用java类。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?