我正在使用Matlab编译器SDK将一些Matlab代码编译到.net DLL,我将其用作dotnet代码5项目中的依赖项
该项目在用于在dotnet 5中编写Lambda的AWS Docker映像中运行。
MathWorks文档指出,设置env-varLD_LIBRARY_PATH
是实现此功能的关键
中断的是,我无法再使用自签名证书(所有AWS服务DynamoDB、S3等)向https端点发出请求。
当我使用Matlab库取出LD_LIBRARY_PATH
时,问题消失了,但当然,当我这样做时,Matlab二进制文件不再工作
我一直在读这样的文章,但我没有设法解决这个SSL问题,当然我可以绕过它,但我不打算。
.net异常
无法建立SSL连接,请参阅内部异常。这个根据验证过程,远程证书无效。
INNER异常:由于>中的错误,远程证书无效;证书链: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的执行。
有用的文章
- https://it.mathworks.com/support/search.html/answers/513449-what-unable-to-launch-the-matlabwindow-application-during-installation.html?fq=asset_type_name:answer%20category:support/introduct1740&第1页
- https://www.bswen.com/2018/11/others-Openssl-version-cause-error-when-loading-shared-libraries-libssl.so.1.1.html
- https://itectec.com/matlab/matlab-how-to-configure-matlab-to-allow-access-to-self-signed-https-servers/
本文编写了一个有效的解决方案: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。