温馨提示×

WebLogic在Ubuntu上如何配置SSL

小樊
36
2025-12-12 18:25:12
栏目: 云计算

在 Ubuntu 上配置 WebLogic SSL 的完整步骤

一 准备与规划

  • 确认环境:建议使用 Oracle WebLogic Server 12c(12.2.x) 及以上版本,JDK 1.8u51+;WebLogic 在 Ubuntu 上的 SSL 配置与在其他 Linux 发行版一致。WebLogic 的 SSL 监听端口默认是 7002,访问示例为 https://<主机名或IP>:7002。自 12c 起仅支持 JSSE 栈(不再支持 Certicom)。同时规划是 单向 SSL(仅服务器认证)还是 双向 SSL(客户端也需证书)。

二 准备证书与密钥库

  • 方案A 快速自签名(开发/测试)
    • 使用 JDK 的 keytool 生成 JKS 身份密钥库与自签名证书:
      keytool -genkeypair \
        -alias server \
        -keyalg RSA -keysize 2048 \
        -keystore identity.jks \
        -storepass <StorePass> \
        -keypass <KeyPass> \
        -dname "CN=<主机名或IP>,OU=Dev,O=Org,L=City,ST=State,C=CN" \
        -validity 365
      
    • 说明:CN 建议填写实际访问的 主机名或IP,否则浏览器会提示主机名不匹配。生产环境请使用 CA 签发证书替换自签名证书。
  • 方案B 使用 CA 签发证书(生产)
    • 生成密钥与 CSR:
      keytool -genkeypair \
        -alias server \
        -keyalg RSA -keysize 2048 \
        -keystore identity.jks \
        -storepass <StorePass> \
        -keypass <KeyPass> \
        -dname "CN=<域名或IP>,OU=Dept,O=Org,L=City,ST=State,C=CN" \
        -validity 365
      
      keytool -certreq \
        -alias server \
        -keystore identity.jks \
        -storepass <StorePass> \
        -file server.csr
      
    • server.csr 提交给 CA,获取签发的证书链(如 server.crt 与中间/根证书)。导入顺序通常为:先导入中间/根证书,再导入服务器证书,保持与生成 CSR 时相同的 alias(例如 server):
      # 导入中间/根(按需多次导入)
      keytool -importcert -alias rootca  -file root.crt   -keystore identity.jks -storepass <StorePass> -noprompt
      keytool -importcert -alias interca -file inter.crt  -keystore identity.jks -storepass <StorePass> -noprompt
      
      # 导入服务器证书(alias 必须与生成 CSR 时一致)
      keytool -importcert -alias server  -file server.crt  -keystore identity.jks -storepass <StorePass>
      
    • 信任库:可使用 DemoTrust.jks(开发/测试),生产建议自建信任库并导入所需 CA 证书

三 在管理控制台配置 SSL

  • 登录 WebLogic 管理控制台,进入:Environment → Servers → <目标服务器> → Configuration → Keystores
  • 选择 Custom Identity and Java Standard Trust(或 Custom Trust),填写:
    • Identity Keystore:identity.jks 的完整路径
    • Identity Keystore TypeJKS
    • Identity Keystore Passphrase:与创建密钥库时一致
    • Java Standard Trust Keystore:保持默认(使用 cacerts 或 DemoTrust)
  • 切到 Configuration → SSL,设置:
    • Enabled:勾选启用 SSL
    • Listen Port:如 7002(确保端口未被占用)
    • Private Key Aliasserver
    • Private Key Passphrase:与生成密钥时一致
  • Advanced 中按需配置 Host Name Verification(开发可关闭,生产建议保持默认/自定义校验)。
  • 如需 双向 SSL:在 SSL 页面启用 Two-Way SSL,并配置入站/出站证书校验策略(如仅内置校验或叠加 CertPathValidator)。
  • 点击 Save,在 Change CenterActivate Changes;部分 SSL 变更需要重启,或使用控制台的 Restart SSL 按钮在不重启整个服务器的情况下使密钥库/证书变更生效。

四 测试与常见问题

  • 访问测试:打开浏览器访问 https://<主机名或IP>:7002,若使用自签名证书,需手动信任。生产证书应显示正常锁标识。
  • 主机名验证:若证书 CN/SAN 与访问地址不一致,浏览器会告警;请确保 CN 或 SAN 包含实际访问的 FQDN/IP,或在控制台正确配置主机名校验策略。
  • 端口与协议:确认 7002 已在服务器防火墙放行,且客户端使用 HTTPS 协议访问。
  • 证书链完整:若浏览器提示链不完整,需在密钥库中按正确顺序导入 中间 CA 与根 CA 证书。

五 可选 配置 HTTP 到 HTTPS 跳转

  • 在应用的 web.xml 增加安全约束,使指定资源强制 CONFIDENTIAL(仅对应用生效):
    <security-constraint>
      <web-resource-collection>
        <web-resource-name>SSL</web-resource-name>
        <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
    </security-constraint>
    
  • 说明:该方式依赖应用部署配置;如需在 WebLogic 层面做全局 80→443 跳转,通常通过 反向代理/负载均衡(如 Nginx/Apache/硬件 LB) 实现更稳妥。

0