尝试创建CSR时CloudHSM主动关闭连接的原因排查
问题描述
已部署EC2实例,可正常连接并登录CloudHSM集群,完成用户配置,端口(2223)和虚拟网络连通性无异常。执行以下keytool命令生成密钥对:
keytool -genkeypair -alias Keystore \ -keyalg rsa -keysize 4096 \ -sigalg sha512withrsa \ -keystore keystore.store \ -storetype CLOUDHSM \ -J-classpath '-J/opt/cloudhsm/java/*'
得到如下错误输出:
thread 'CloudHSM Worker' panicked at 'failed to create appender: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }', /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-appender-0.2.2/src/rolling.rs:499:53 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace Error writing to log file. Falling back to standard error. 2023-10-12T18:39:49.648Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::connection::connection_pool] 添加HSM连接到连接池: HSM { IP: "xx.xx.x.xx", Port: 2223 } 2023-10-12T18:39:49.648Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::hsm_connection_impl] HSM xx.xx.x.xx:2223 正在连接 2023-10-12T18:39:49.654Z INFO [8277] ThreadId(2) [cloudhsm_provider_common::server_connection::common] 初始化新连接: HSM { IP: "xx.xx.x.xx", Port: 2223 } 2023-10-12T18:39:49.706Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::server_properties] 与服务器版本握手成功。收到版本: ComponentVersion { major: 2, minor: 8 } 2023-10-12T18:39:49.706Z INFO [8277] ThreadId(2) [hsm1_marshaling::server_handshake] 报告SDK版本 Jce:5.10.0-el6:CodeBuildBatchProject-uFu5sNXfquqK:7466104f-c1f7-4f5b-aa7e-19d490914153 2023-10-12T18:39:49.819Z INFO [8277] ThreadId(1) [cloudhsm_provider::hsm1::connection::connection_pool::cluster_info_message] 当前集群版本为0; 传入集群版本为213903432 2023-10-12T18:39:49.823Z INFO [8277] ThreadId(2) [cloudhsm_provider_common::server_connection::common] 初始化新连接: HSM { IP: "xx.xx.x.xx", Port: 2223 } 2023-10-12T18:39:49.884Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::hsm_connection_impl] HSM xx.xx.x.xx:2223 的FIPS状态为2 2023-10-12T18:39:49.884Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::hsm_connection_impl] 更新HSM xx.xx.x.xx:2223 的状态 2023-10-12T18:39:49.885Z INFO [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::hsm_connection_impl] HSM xx.xx.x.xx:2223 已连接并就绪 2023-10-12T18:39:49.887Z INFO [8277] ThreadId(1) [cloudhsm_provider::hsm1::connection::connection_pool::cluster_info_message] 待添加的HSM: {HSM { IP: "xx.xx.x.xx", Port: 2223 }} 2023-10-12T18:39:49.887Z INFO [8277] ThreadId(1) [cloudhsm_provider::hsm1::connection::connection_pool::cluster_info_message] 待移除的HSM: {} 输入密钥库密码: 重新输入新密码: 不匹配。请重试 输入密钥库密码: 重新输入新密码: 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher::dispatcher_error] 调度器错误: 读取数据包失败.. 内部错误: early eof 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher::reader] 无法从套接字读取响应。错误: 调度器已断开连接。错误: "HSM主动关闭了连接。" 2023-10-12T18:41:21.004Z INFO [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher] 退出所有活动调度器操作 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider::hsm1::hsm_connection::error] 与服务器断开连接。消息: Tls断开连接。原因: HSM主动关闭了连接。 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider_common::keep_alive] xx.xx.x.xx的保活失败。内部错误: 发生内部错误。错误: HSM已断开连接 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher::dispatcher_error] 调度器错误: 读取数据包失败.. 内部错误: early eof 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher::reader] 无法从套接字读取响应。错误: 调度器已断开连接。错误: "HSM主动关闭了连接。" 2023-10-12T18:41:21.004Z INFO [8277] ThreadId(1) [cloudhsm_provider_common::dispatcher] 退出所有活动调度器操作 keytool错误: com.amazonaws.cloudhsm.jce.jni.exception.ProviderException: 底层Provider连接已丢失: 函数执行期间与设备的通信丢失。 2023-10-12T18:41:21.004Z ERROR [8277] ThreadId(2) [cloudhsm_provider::hsm1::hsm_connection::error] 与服务器断开连接。消息: Tls断开连接。原因: HSM主动关闭了连接。 2023-10-12T18:41:21.004Z WARN [8277] ThreadId(2) [cloudhsm_provider::hsm1::session::key_management::find::find_key_builder_impl] 无法从HSM xx.xx.x.xx:2223获取对象。内部错误: 与Provider的底层连接已丢失
问题原因及解决步骤
核心问题分析
- 日志目录权限不足:日志开头的
Permission denied错误表明CloudHSM Worker线程无法写入日志目录,会干扰连接稳定性。 - HSM会话超时:输入密码过程耗时过长,触发HSM会话超时机制,导致HSM主动关闭连接。
解决步骤
修复日志目录权限:
确保当前用户拥有CloudHSM日志目录的读写权限,执行以下命令:sudo chown -R $USER:$USER /opt/cloudhsm/logs/ sudo usermod -aG cloudhsm $USER执行后重新登录EC2实例,使权限变更生效。
避免密码输入超时:
- 输入密钥库密码时尽量快速完成,避免间隔超过HSM默认会话超时时间。
- 测试场景下可直接在命令中指定密码(生产环境不推荐),添加参数:
-storepass 你的密钥库密码 -keypass 你的密钥密码
验证用户权限:
确认使用的CloudHSM用户为**Crypto User(CU)**角色,该角色拥有密钥生成权限;若使用的是Crypto Officer(CO)管理角色,需切换为CU用户执行命令。调整会话超时配置:
若频繁出现超时,可通过CloudHSM控制台修改集群的会话超时参数,延长允许的无操作时间。
内容的提问来源于stack exchange,提问作者Solv_it_kas
相关产品推荐
相关产品推荐

