1

我们有涉及多台服务器的系统设置。例如,当用户登录到应用程序时,访问管理服务器执行身份验证部分,成功登录后,它会将 HTTP 请求转发到 Web 服务器,然后再将其转发到应用程序服务器。

现在的需求是,在认证过程中AM server,我们需要在cookies中写入一些数据,将这些cookies添加到被转发到应用服务器的HTTP请求中。部署在 App Server 上的应用程序将读取这些 cookie 并使用该值。

我已经成功完成并测试了这一点。但实际上 cookie 中的数据需要采用加密格式。因此,AM 服务器应该加密数据,而 App 服务器应该解密数据以使用它。我JCEKS keystore在 AM 服务器上创建了一个,使用 keytool 命令向它添加了一个加密密钥。然后在我在 AM 服务器上编写的自定义类中,我使用 Cipher 通过AES-128算法加密数据。这已成功完成。
我还在JCEKS keystor我的应用服务器上创建了另一个,使用 keytool 命令添加了一个加密密钥。然后我从 AM 服务器导出证书keystore并将其导入到keystoreApp 服务器中,该服务器TrustedCert在 App 服务器的keystore. 但是,当我也使用 Cipher 和 AES-128 解密 App 服务器上的数据时,我得到了异常:

javax.crypto.BadPaddingException: Given final block not properly padded

我的密钥库设置中一定遗漏了一些东西。请提供一些有关如何执行此操作的指导。

谢谢!

4

1 回答 1

1

我得到了解决方案。我做错的是我在两个密钥库中都生成了加密密钥。正确的方法是在一个密钥库中生成一个密钥并将其导出-导入到另一个密钥库。我无法使用 keytool 做到这一点,所以我使用了 keytool IUI,很棒的工具!!!

于 2012-10-01T10:16:00.240 回答