执行属性加密功能时请考虑以下事项:
一般而言,在修改属性加密配置时,最佳做法是先导出数据,再更改配置,然后导入新配置的数据。
这可确保整体考虑所有配置更改,而不会丢失任何功能。否则,某些功能可能会丢失,从而破坏数据的安全性。
在现有数据库上修改属性加密配置可能会对系统性能造成严重影响。
例如,假定您有一个包含现有数据的数据库实例。该数据库包含以前存储的具有 mySensitiveAttribute 属性的条目。此属性的值以明文形式存储在数据库和索引文件中。如果您以后决定加密 mySensitiveAttribute 属性,则必须导出该数据库实例中的所有数据,然后将其重新导入数据库,以确保服务器使用属性加密配置更新数据库和索引文件。如果一开始就对属性进行加密,则可避免由此造成的性能影响。
以解密格式导出数据时,如果使用错误的密码,则导出将被拒绝。
作为一种安全措施,服务器会在用户以解密格式导出数据时提示用户输入密码。如果用户提供了错误的密码,服务器将拒绝解密导出操作。可以直接输入密码,也可以提供密码所在文件的路径。请注意,此文件与 SSL 密码文件具有相同的语法。请参见配置证书数据库密码。
要配合使用 dsconf 命令及其 -–decrypt-attr 选项,必须将 set password prompt 设置为 on,并且还必须按配置证书数据库密码所述选择了证书数据库密码。
可以对加密算法进行更改,但如果更改过程有误,则结果可能会丢失索引功能。
要更改用于加密数据的算法,请导出数据,再修改属性加密配置,然后导入数据。如果不按此过程操作,则根据初始加密算法创建的索引将不再有效。
由于加密的属性前添加了表示所用加密算法的密码标记,内部服务器操作将负责导入数据。因此,目录服务器允许您在更改算法前以加密格式导出数据。
更改服务器的 SSL 证书将导致您无法解密已加密的数据。
属性加密功能会使用服务器的 SSL 证书生成自己的密钥,以用于执行加密和解密操作。因此,解密已加密的数据时需要使用 SSL 证书。如果更改证书之前未解密数据,将无法解密数据。要避免出现这种情况,请以解密格式导出数据,再更改证书,然后重新导入数据。
要以加密格式传输数据,也就是说,要将数据从一个服务器实例导出,然后再导入另一个服务器实例,则这两个服务器实例必须使用相同的证书。
有关信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 管理指南》中的“加密属性值”。