Jasypt StandardPbestringencryptor设置密码在Spring Bean配置文件中
-
27-09-2020 - |
题
使用Jasypt的标准化ringencryptor,我们必须在Spring Bean配置文件中明确设置密码。在bean配置文件中有密码是否可以和安全?将PCI合规性存储加密器密码是否存在问题?
解决方案
这个将不会是pci兼容。数据加密密钥无法以明文存储。具体点是3.5.2,即:
检查系统配置文件 验证键是否存储在 加密格式,以及 存储键加密密钥 与数据加密密钥分开。
您可能还会在关键管理区域周围有其他问题,例如3.6.6(键的分开知识和双重控制)
验证关键管理程序 实施要求拆分 钥匙的知识和双重控制 (例如,需要两三个 人们,每个人只知道自己 部分关键,重建 整个钥匙)。
重点管理是最具挑战的部分PCI合规性。您可能想考虑使用(已有PCI兼容)第三方来管理您的卡数据。如果您正在推动自己的滚动,那么我会建议您在最早的机会中提出QSA(PCI合格安全助理员)的帮助,以评估您计划的安全性。最终,您需要说服的QSA,以便通过PCI要求,并且他们将非常乐意建议。
其他提示
您需要将对称密钥存储在某处。配置文件是一个很好的地方,只要没有人可以访问它。
我有一个想法
您可以使用keyStore.jks的键盘加密所有纯密码。您知道keystore.jks有自己的密码。您可以记住密码以及程序开始时输入它在控制台上。例如,当您的程序开始时:
Console console = System.console();
keyPair = loadKeystore(new String(console.readPassword()));
private static KeyPair loadKeystore(String pwd) {
InputStream is = Main.class.getResourceAsStream("/keystore.jks");
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(is, s.toCharArray());
String alias = "youralias";
Key key = keystore.getKey(alias, pwd.toCharArray());
if (key instanceof PrivateKey) {
// Get certificate of public key
Certificate cert = keystore.getCertificate(alias);
// Get public key
PublicKey publicKey = cert.getPublicKey();
// Return a key pair
return new KeyPair(publicKey, (PrivateKey) key);
}
return null;
}
.
返回键盘时,您可以使用它来加密密码。
key= loadKeystore(“yourpass”)。getPrivate()。getEncoded()
goodluck
不隶属于 StackOverflow