0

我在这里遵循指示:https ://docs.microsoft.com/en-us/azure/iot-edge/how-to-create-transparent-gateway 。

当我使用 OpenSSL 和“New-CACertsEdgeDevice myGateway”命令创建证书时,我最终得到一个基于椭圆曲线的私钥,当我使用消息配置边缘网关时该私钥失败

“目前仅支持 RSA”。

我修改了 ca-certs.ps1 中的 New-CACertsCertChain 脚本(将 $useEcc 变量设置为 $false)并重新运行。该脚本成功,但现在 New-CACertsEdgeDevice 脚本失败,并显示:

New-SelfSignedCertificate:无法将“System.Object[]”转换为参数“Signer”所需的“Microsoft.CertificateServices.Commands.Certificate”类型。不支持指定的方法。

知道我做错了什么吗?

4

2 回答 2

0

我不认为你做错了什么。

看来powershell脚本有问题。好消息是 Azure IoT C SDK GitHub 分支CACertToolEdge中的说明已修复,您可以同步并重试。

我在这里提出了一个问题:https ://github.com/Azure/azure-iot-sdk-c/issues/337来纠正这个问题。

编辑:2018 年 1 月 9 日:脚本似乎已修复,您不应遇到此特定问题。

于 2017-12-20T07:51:43.860 回答
0

我找到了答案,尽管我仍然不确定根本原因。

这些步骤使我能够创建有效的证书...

我保留了对 New-CACertsCertChain 所做的更改(如上所述)

我从机器证书存储中删除了所有以前的证书

然后我关闭了现有的 PowerShell 控制台并启动了一个新的管理员控制台。

我从这里安装了 OpenSSL:https ://sourceforge.net/projects/openssl/@这个目录:C:\utils\openssl\bin

我设置环境路径如下: $ENV:PATH += ";C:\utils\openssl\bin" $ENV:OPENSSL_CONF="C:\utils\openssl\bin\openssl.cnf"

之后,我继续按照文章的说明进行操作,并且成功了。我确实收到了关于找不到 C:/OpenSSL/openssl.cnf 的警告,但我忽略了它。

于 2017-12-20T07:33:42.323 回答