适用于Azure的Azure存储模拟器函数的错误

cld4siwp  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(106)

背景资料:
我的上一个项目包括一个Python脚本,需要从我的本地机器发送邮件。在这个项目中,我必须设置我的计算机,包括在我的机器上配置一些OpenSSL。
但是因为我对OpenSSL一无所知,而且这是我第一次使用它,所以我不知道如何使用它。我做了一些研究,开始工作。当我完成了那个项目,并开始我的新项目时,我现在遇到了OpenSSL的问题。
我现在正在处理一个Azure函数,我需要从AAD恢复数据。但是,即使是刚刚创建的项目,也会由于以下错误而无法运行:

UnableToStart: c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\Azure Storage Emulator\azurite.exe --location "C:\Users\N1MAJT\AppData\Local\.vstools\azurite" --debug "C:\Users\N1MAJT\AppData\Local\.vstools\azurite\debug.log" --skipApiVersionCheck
UnableToStart: OpenSSL configuration error:
UnableToStart: 22544:error:02001005:system library:fopen:Input/output error:C:\Users\runneradmin\AppData\Local\Temp\pkg.3fcc969acc52617e676dcbbb\node\deps\openssl\openssl\crypto\bio\bss_file.c:69:fopen('C:\Users\N1MAJT\Documents\openssl\openssl-1.0.2j-fips-x86_64\OpenSSL\bin','rb')
UnableToStart: 22544:error:2006D002:BIO routines:BIO_new_file:system lib:C:\Users\runneradmin\AppData\Local\Temp\pkg.3fcc969acc52617e676dcbbb\node\deps\openssl\openssl\crypto\bio\bss_file.c:78:
UnableToStart: 22544:error:0E078002:configuration file routines:def_load:system lib:C:\Users\runneradmin\AppData\Local\Temp\pkg.3fcc969acc52617e676dcbbb\node\deps\openssl\openssl\crypto\conf\conf_def.c:170:

我不确定如何恢复到默认的OpenSSL,并希望有人在这里可能有一些建议,如何处理这个问题。
如前所述,即使是刚刚创建的项目,也会由于上面的错误而无法运行。所以我知道它在我的机器上本地有一些事情要做,而不是项目。
我已经在论坛上联系了OpenSSL社区以获得进一步的帮助,但我也可以在这里这样做。
如果任何人有任何可以帮助,它将不胜感激。

oiopk7p5

oiopk7p51#

UnableToStart: OpenSSL configuration error: UnableToStart:
22544:error:02001005:system library:fopen:Input/output error:

要解决此错误,请尝试以下步骤。
1.我尝试在git中使用OpenSSL,并将我的openssl exe文件所在的位置保存到我的环境变量中,如下所示:

OpenSSL命令:-

openssl rsa -passin pass:x -``in server.pass.key -out server.key

输出:-

当我从同一个命令行运行我的函数时,它成功触发了,参考下面:

我还启动了Storage Emulator并运行OpenSSL命令,它成功运行了:

1.检查你的openssl cnf文件,如果有任何更改,请将其重置为默认值,并确保将其添加为环境变量。如果openssl cnf文件不存在,请重新安装您的openssl,参考以下内容:
我已经参考了这个SO thread1SOthread2的答案
找到打开ssl的路径:-

openssl version -d

在运行你的函数之前,你也可以通过命令行设置环境变量,下面的代码由@BlackPearl在SO thread 1链接中提到:-

set OPENSSL_CONF=C:\Program Files\Git\usr\ssl\openssl.cnf

如果以上方法都不起作用,那么创建你自己的cnf文件,并将其添加到openssl或ssl目录中。有时候不同的服务所需要的OpenSSL conf文件是不同的,所以你可以在运行你的Function或你的服务之前,删除OPENSSL_CONF环境变量,使用上面的SET命令,以避免依赖性错误。正如Er 4 twXz在这个Github问题中提到的,与你的错误代码相同。也可以参考这个github问题以获得更多见解。

附加参考:-

macos - Is it possible to run Azure Function app with SSL locally? - Stack Overflow

相关问题