【发布时间】:2020-08-28 21:39:13
【问题描述】:
我正在开展一个项目,我们计划使用 SQL Server Always Encrypted 来加密我们的 SQL Server 2016 数据库。客户端应用程序将通过兼容的 jdbc 驱动程序访问数据。
Microsoft 文档说我可以使用 MSSQL_JAVA_KEYSTORE 作为 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 是内置列主密钥库提供程序之一。
我做错了什么?
【问题讨论】:
-
我认为 lptr 链接的要点是:注意:内置 SQL Server 管理 Studio 功能无法为 Java 密钥库创建列主密钥定义。 T-SQL 命令必须以编程方式使用。 换句话说,您需要从其 JDBC 连接字符串具有正确 columnEncryptionSetting、keyStoreAuthentication、keyStoreLocation 和 keyStoreSecret 属性的 Java 应用程序中执行此操作。
-
谢谢你们指出这一点。我在阅读时忽略了那部分。有没有人尝试过或知道有人这样做过?
-
关于混合 Microsoft Cert Store - Java Key Store 用例的任何新见解?
标签: sql-server always-encrypted