【问题标题】:Start WebLogic server with custom SSL config使用自定义 SSL 配置启动 WebLogic 服务器
【发布时间】:2020-04-06 12:13:20
【问题描述】:

目前我正在对 Oracle WebLogic Server 12c 进行一些试验。 我设置了一个新域来试验 SSL。 我已经创建了一个自定义身份存储、证书和信任 按照此处的说明进行操作:https://helpx.adobe.com/uk/experience-manager/6-3/forms/using/admin-help/configuring-ssl-weblogic-server.html#creating_an_ssl_credential_for_use_on_weblogic_server

我还设置了我的 AdminServer 以使用这些,我可以通过激活域范围的管理端口并连接到管理控制台来进行测试。我在浏览器中检查了提供的证书并可以验证它是我的自定义证书。

到目前为止一切顺利。但是,当我创建托管服务器并将其配置为也使用我的自定义身份、信任和证书并将设置保存在管理控制台中时,我无法使用提供的 startManagedWebLogic.sh 脚本启动服务器。 失败的原因是,服务器尝试使用 DemoCert 和 DemoTrust,正如我在日志中看到的那样。因此它无法连接到 AdminServer 并且无法加载它的配置。

这是我的问题: 如果始终使用默认设置首先启动托管服务器,我应该如何使用自定义 SSL 设置启动托管服务器?有什么办法可以修改启动脚本以使用不同的默认值?还是有不同的“最佳实践”?

服务器未启动的错误是:

<Apr 6, 2020 2:40:46,041 PM CEST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: A MultiException has 6 exceptions.  They are:
1. weblogic.security.SecurityInitializationException: Authentication for user weblogic denied.
2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.SecurityService
3. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.jndi.internal.RemoteNamingService errors were found
4. java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.jndi.internal.RemoteNamingService
5. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.io.common.internal.FileService errors were found
6. java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.io.common.internal.FileService

A MultiException has 6 exceptions.  They are:
1. weblogic.security.SecurityInitializationException: Authentication for user weblogic denied.
2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.SecurityService
3. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.jndi.internal.RemoteNamingService errors were found
4. java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.jndi.internal.RemoteNamingService
5. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.io.common.internal.FileService errors were found
6. java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.io.common.internal.FileService

    at org.jvnet.hk2.internal.Collector.throwIfErrors(Collector.java:89)
    at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:250)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:358)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
    at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)
    Truncated. see log file for complete stacktrace
Caused By: weblogic.security.SecurityInitializationException: Authentication for user weblogic denied.
    at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.doBootAuthorization(CommonSecurityServiceManagerDelegateImpl.java:1158)
    at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postInitialize(CommonSecurityServiceManagerDelegateImpl.java:1272)
    at weblogic.security.service.SecurityServiceManager.postInitialize(SecurityServiceManager.java:586)
    at weblogic.security.SecurityService.start(SecurityService.java:130)
    at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
    Truncated. see log file for complete stacktrace
Caused By: javax.security.auth.login.FailedLoginException: [Security:090938]Authentication failure: The specified user failed to log in. weblogic.security.providers.authentication.LDAPAtnDelegateException: [Security:090295]caught unexpected exception, No such object
    at com.bea.common.security.utils.ExceptionHandler.throwFailedLoginException(ExceptionHandler.java:62)
    at weblogic.security.providers.authentication.LDAPAtnLoginModuleImpl.login(LDAPAtnLoginModuleImpl.java:369)
    at com.bea.common.security.internal.service.LoginModuleWrapper$1.run(LoginModuleWrapper.java:117)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.bea.common.security.internal.service.LoginModuleWrapper.login(LoginModuleWrapper.java:114)
    Truncated. see log file for complete stacktrace
>

我已经检查了用户名和密码,它们输入正确。

编辑:如果我禁用管理端口,并启动托管服务器

startManagedWeblogic ms0 t3://localhost:7001 (1)

而不是

startManagedWeblogic ms0 t3s://localhost:9001 (2)

服务器按预期启动。尽管在启动期间尝试访问管理服务器时存在持续问题,但使用 ENABLED 管理端口 (2) 的连续启动确实成功。

编辑 2: 感谢下面的回复,我已经尝试使用 NodeManager。不幸的是,由于 SSL 异常,我无法从管理控制台访问它:

javax.net.ssl.SSLHandshakeException

我发现,我必须将 Nodemanager 配置为还使用 nodemanager.properties 文件中的自定义 ssl 设置。 我使用了以下设置:

## SSL ##
# Configure default SSL
KeyStores=CustomIdentityAndCustomTrust

# Identity keystore
CustomIdentityKeyStoreFileName=/home/iffuw/feck-credentials.jks
CustomIdentityKeyStoreType=jks
CustomIdentityKeyStorePassPhrase=whatever

# private key
CustomIdentityAlias=feck-credentials
CustomIdentityPrivateKeyPassPhrase=whatever

# Trust keystore
CustomTrustKeyStoreFileName=/home/iffuw/feck-ca.jks
CustomTrustKeyStoreType=jks
CustomTrustKeyPassPhrase=whatever
CustomTrustKeyStorePassPhrase=whatever

请注意,密码不是全部,但两个 KeyStore(Id 和 Trust)的密码是相同的。 当我启动 nodemanger 时,来自密钥和身份块的密码被加密。来自信任块的密码被证明是空的。 这里可能会出错,但我不知道是什么。 有任何想法吗? nodemanager.log 说:

<Apr 6, 2020 4:30:40 PM CEST> <INFO> <Upgrade> <Removing NodeManager property: CustomTrustKeyStorePassPhrase>

这正常吗?

【问题讨论】:

    标签: java weblogic weblogic12c


    【解决方案1】:

    在脚本 startManagedWebLogic.sh 中需要设置参数:

    -Djavax.net.ssl.trustStore=/YOUR_PATH/CustomTrust.jks 
    

    更有用的(示例)SSL/JKS 参数:

    -Djavax.net.debug=ssl
    -Djavax.net.ssl.keyStoreType=pkcs12
    -Djavax.net.ssl.keyStore=client.p12
    -Djavax.net.ssl.keyStorePassword=whatever
    -Djavax.net.ssl.trustStoreType=jks
    -Djavax.net.ssl.trustStore=client-truststore.jks
    -Djavax.net.ssl.trustStorePassword=whatever
    

    另一方面,如果您通过管理控制台启动托管服务器,则可以避免这种情况(实际上它是在工作的节点管理器)。

    【讨论】:

    • 我从头开始重新做了每一步,现在它可以与节点管理器一起使用。非常感谢你!但是我仍然想知道,为什么自定义信任存储的密码会从 nodemanager.properties 中删除
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多