【问题标题】:SSL broken with LD_LIBRARY_PATH and MatlabSSL 被 LD_LIBRARY_PATH 和 Matlab 破坏
【发布时间】:2021-01-29 20:20:07
【问题描述】:

我正在使用 Matlab Compiler SDK 将一些 Matlab 代码编译为 .net DLL,我在 dotnet code 5 项目中用作依赖项。
该项目正在AWS Docker image for writing Lambda in dotnet 5 内运行。

MathWorks 文档指出,设置环境变量 LD_LIBRARY_PATH 是此功能正常工作的关键。
问题是我不能再使用自签名证书(所有 AWS 服务 DynamoDB、S3 等)向 https 端点发出请求。
当我用 Matlab 库取出 LD_LIBRARY_PATH 时,问题就消失了,但当然,当我这样做时,Matlab 二进制文件不再工作了。
我一直在阅读文章like this one,但我没有设法解决这个 SSL 问题,我当然可以绕过但我不打算这样做。

.net 异常

无法建立 SSL 连接,请参阅内部异常。这 根据验证程序,远程证书无效。

内部异常:远程证书无效,因为 > 证书链中的错误:PartialChain

我发现导致此异常的特定库是:

  • /opt/mcr/v99/bin/glnxa64/libssl.so.1.1
  • /opt/mcr/v99/bin/glnxa64/libssl.so.1
  • /opt/mcr/v99/bin/glnxa64/libcrypto.so.1.1
  • /opt/mcr/v99/bin/glnxa64/libcrypto.so.1

它们由 Matlab Runtime 提供,并通过环境变量 LD_LIBRARY_PATH 链接。
我试图删除这些并链接系统,以这种方式我修复 SSL 问题,但我中断 Matlab 执行。

有用的文章

【问题讨论】:

  • “DLL”和“LD_LIBRARY_PATH”不属于同一个问题。也许您可以澄清一下您在哪个平台上(看起来像 Linux,但“DLL”?)以及您的路径上有哪些不同的 SSL 库。
  • 嗨,是的,我在 Linux (Docker) 上,dotnet 核心的 DLL 依赖项是正常的。事实上,Matlab Compiler SDK 就是一个用于创建这种“通用”DLL 的工具。 it.mathworks.com/help/compiler_sdk/dotnet/…我将添加有关路径中文件的更多详细信息。
  • 我不明白。这是否以某种方式在 Linux 上运行 Windows DLL 二进制文件?叹息……
  • 这是 dotnet core 的重点。

标签: .net docker matlab ssl shared-libraries


【解决方案1】:

在这篇文章中写了一个有效的解决方案:https://www.scivision.dev/matlab-websave-ssl-certificate/

连接到 Docker 映像并检查 /etc/ssl/certs/*.srt 中的内容非常有用。
我通过添加引用文件的SSL_CERT_FILE 环境变量解决了我的问题:

export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt

现在我在 Docker Lambda 上运行了 Matlab。

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2018-07-11
    • 2012-09-02
    相关资源
    最近更新 更多