Ambari服务器在启动过程中报出异常:系统无法找到指定路径下的密钥文件,具体表现为/var/lib/ambari-server/keys/keystore.p12文件不存在,抛出java.io.FileNotFoundException异常。同时,在处理证书相关操作时,还出现了DerInputStream.getLength(): lengthTag=127, too big的错误提示,这通常意味着尝试读取的输入流中存在长度标识过大或格式不兼容的数据,可能与证书或密钥文件损坏、格式错误有关。
1、 进一步排查发现,系统尝试通过OpenSSL命令生成自签名证书以供Ambari使用,执行的具体指令为调用openssl ca工具,参数包括创建序列号、输出路径、有效期设置(365天)、私钥文件路径、启用自签名模式、指定扩展配置及配置文件等。然而,该命令最终返回退出码1,表明执行失败。失败原因为an error occurred parsing the command options,即命令行参数解析过程中出现错误。
2、 造成此问题的可能原因包括:所需的关键文件如ca.key、ca.csr或ca.config缺失或权限不足;配置文件ca.config中定义的参数格式有误或不被当前OpenSSL版本支持;命令中使用的选项组合不符合OpenSSL语法规范;或者环境中的OpenSSL版本与预期不符,导致部分参数无法识别。此外,前期密钥和证书生成流程中断也可能导致后续依赖这些文件的操作失败。建议检查相关目录是否存在且具备正确读写权限,确认所有必要文件均已生成且内容完整,并验证OpenSSL命令语法与当前系统版本兼容性。
3、 根据上述错误现象逐步分析,可能是keystore.p12文件未正确生成或文件缺失。由于该文件由openssl命令创建,问题很可能出在生成过程中。因此,应重点排查openssl相关操作是否存在错误或配置不当,以确保文件能正常生成并符合要求。
4、 经过多次排查确认,问题源于CentOS 7系统中OpenSSL版本不兼容,需将OpenSSL从1.0版本升级至1.1版本,以解决相关功能异常,确保系统安全与服务正常运行。
5、 将OpenSSL环境升级到1.1.0c版本以增强安全性和兼容性。
6、 查看原始版本
7、 获取 openssl-1.1.0c.tar.gz 安装包文件。
8、 升级zlib库
9、 确认升级是否完成
10、 重新安装Ambari服务器以恢复服务功能。
11、 启动Ambari服务器服务进程
12、 最后检查 /var/lib/ambari-server/keys 目录中的文件内容如下所示。
13、 若操作系统为最新版,或许可执行该命令。
14、 由于OpenSSL均为最新版本,因此不会出现错误。
