我的应用程序如何访问在 Weblogic 管理控制台中配置的密钥库



我想在我的 Web 应用程序中访问在 Weblogic 的自定义密钥库配置中配置的身份密钥库 (JKS(。我怎样才能让weblogic在不依赖以下环境属性的情况下公开它:-Djavax.net.ssl.Keystore,-Djavax.net.ssl.KeystorePassword。

可以使用以下代码作为起点。

几点注意事项:

  • 执行代码的用户需要属于名为 OracleSystemGroup 的组
  • 密钥库是从文件系统加载的,EJB 规范不建议这样做。但我认为文件读取可以安全地完成。
  • 密钥库密码包含在 java.lang.String 中,不建议这样做。

由于这些缺点,我正在研究一种更好的方法。我一直在尝试找到一个 WebLogic 服务,该服务将提供访问身份存储中的证书和密钥的服务。似乎没有。

InitialContext ic = new InitialContext();
MBeanServer server = (MBeanServer) ic.lookup("java:comp/env/jmx/runtime");
// Get access to server configuration
ObjectName runtime = new ObjectName("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
ObjectName serverConfig = (ObjectName) server.getAttribute(runtime, "ServerConfiguration");
/* Load identity store location and passphrase.
 * If e.g. Demo identity has been configured (in WL console) instead of
 * custom identity then the following does not work.
 */
// Passphrase as clear text
Object keyStorePassPhrase = server.getAttribute(serverConfig, "CustomIdentityKeyStorePassPhrase");
Object keyStoreFileName = server.getAttribute(serverConfig, "CustomIdentityKeyStoreFileName");
// Load keystore
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream(keyStoreFileName.toString()),
        keyStorePassPhrase.toCharArray());

最新更新