NetWorker:PBE 参数解析错误:需要 AES 密码的对象标识符
Summary: NetWorker 身份验证服务自签名证书已替换为 CA 签名证书。NetWorker 服务器服务无法启动,并报告“PBE 参数解析错误:需要 AES 密码的对象标识符”
Symptoms
- NetWorker 身份验证服务自签名证书已替换为 CA 签名证书。
- 替换证书后,NetWorker 服务器服务无法启动。服务器守护程序日志在服务启动期间报告以下错误:
- Linux:
/nsr/logs/daemon.raw - Windows(默认):
C:\Program Files\EMC NetWorker\nsr\logs\daemon.raw - NetWorker:如何使用
nsr_render_log呈现.raw日志文件
- Linux:
notice authservice: Caused by: java.io.IOException: PBE parameter parsing error: expecting the object identifier for AES cipher
Cause
用于将自签名证书替换为 CA 签名证书的过程需要使用 Java keytool以及 OpenSSL生成证书签名请求 (CSR) 并创建 PKCS12 (p12) 文件。
出现此问题的原因是 中使用的加密算法之间不兼容 PKCS12 文件和 Java keytool解析它们的能力,尤其是当涉及到不同版本的 OpenSSL 和 Java 时。
较新的 OpenSSL 版本可能默认为 AES 加密(例如, AES-256-CBC) .p12 文件,保护私钥和证书。这比 3DES 等旧算法更安全。
较旧版本的 Java(8u291 及更早版本)不支持 在 PKCS12 文件。他们希望加密使用较旧的算法,例如:
PBEWithSHAAnd3KeyTripleDESPBEWithSHAAndRC2_40
所以当 Java keytool 尝试导入 .p12 使用 AES 加密的文件无法解析基于密码的加密 (PBE) 参数,因为它无法识别 AES 的对象标识符 (OID)。
如果服务器上安装了多个 Java 实例,也会出现此问题。例如,NetWorker 配置为使用 NetWorker Runtime Environment (NRE),并更新为 NetWorker 版本支持的最新 NRE 版本;但是,服务器还安装了旧版本的 Java 运行时环境 (JRE)。在 keytool 命令被使用较旧的版本,这导致了 .p12 NetWorker 使用的文件和证书存储。
Resolution
- 强烈建议将 NetWorker 配置为使用 NetWorker Runtime Environment (NRE)。确保 NetWorker 配置为使用 NRE,并且 NRE 定期更新到 NetWorker 版本支持的可用最新版本:
-
- NetWorker 19.12 及更低版本:NRE 8.0.x
- NetWorker 19.13 及更高版本:NRE 17.0.x
- NetWorker Runtime Environment (NRE):简介和安装
提醒:NetWorker Virtual Edition (NVE) OsRollup 和 NetWorker 升级用于升级 NRE 软件包。默认情况下,NVE 配置为使用 NRE。
- 按照此过程替换 NetWorker 自签名证书时,请指定 NRE 密钥工具的完整路径,或使用变量在命令行界面中设置路径。
Linux: java_bin=/opt/nre/java/latest/bin
Windows: set java_bin="C:\Program Files\NRE\java\jre#.#.#_###\bin"
提醒:Windows 上的路径会因备份管理员选择的安装位置而异。路径还包括不同的 JRE 版本,具体取决于安装的 NRE 版本。
所有后续 keyool 然后通过调用变量来运行命令:
Linux: $java_bin/keytool OPTIONS
Windows: %java_bin%\keytool OPTIONS
完整的过程记录在以下特定于作系统的文章中: