我正在尝试将 SSL 流程卸载到 AWS CloudHSM。在配置 Web 服务器时,当我添加以下内容时:
ssl_engine cloudhsm;
到 nginx 配置的顶部,nginx 不会重新启动,并且记录了以下错误:
2018/05/29 11:53:58 [emerg] 17509#0: ENGINE_by_id("cloudhsm") failed (SSL: error:25066067:DSO support routines:dlfcn_load:could not load the shared library:filename(/usr/lib/x86_64-linux-gnu/engines-1.1/cloudhsm.so): /usr/lib/x86_64-linux-gnu/engines-1.1/cloudhsm.so: cannot open shared object file: No such file or directory error:25070067:DSO support routines:DSO_load:could not load the shared library error:260B6084:engine routines:dynamic_load:dso not found error:2606A074:engine routines:ENGINE_by_id:no such engine:id=cloudhsm)
我该如何解决这个问题?
答案1
我遇到了同样的问题,并记录了调查结果和解决方案Github 问题。
总而言之,如果您遵循了以下步骤:
- 安装并使用适用于 OpenSSL 的 AWS CloudHSM 动态引擎
- Linux 上的 SSL/TLS 卸载 ->步骤 3:配置 Web 服务器
那么你就正确配置了 CloudHSM,并且你可以用普通用户访问它,但启动的用户nginx
不能访问它(这会导致你报告误导性错误)。请参阅上面的解决方案帖子,了解你可以运行的简单测试来验证情况确实如此。
解决方案是追踪服务器是如何启动的(参见这个答案找出您的系统使用的初始化系统),并确保 cloudhsm 凭证是该环境的一部分。AWS 的说明假设主机systemd
作为初始化系统运行。在我的例子中,我使用的是init
,解决方案涉及在启动之前跟踪相应的脚本并传递凭证(n3fips_password
)nginx
。同样,具体细节记录在Github 线程。