You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux容器通过X509证书连接Azure DPS失败求助

Linux容器中X509证书连接Azure DPS失败(错误401002)

按照官方教程操作,无法让Linux容器通过X509证书连接Azure DPS。该代码在Windows 10环境下使用dotnet run命令(C#6和C#8版本)均可正常运行,执行日志如下:

C:\Projects\Azure\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample>dotnet run --  -s 0ne00AF30D0 -c device-01-full-chain.cert.pfx -p 1234
Loading the certificate...
device-01-full-chain.cert.pfx
Found certificate: 84B46F5118AE660329B58BB4D05FXXXXXXXXXXXX CN=Azure IoT Hub CA Cert Test Only; PrivateKey: False
Found certificate: AED34CED0E79056EF6632DD1720BXXXXXXXXXXXX CN=Azure IoT Hub Intermediate Cert Test Only; PrivateKey: False
Found certificate: 95D072F7DF549D3A2A49186B6300XXXXXXXXXXXX CN=device-01; PrivateKey: True
Using certificate 95D072F7DF549D3A2A49186B6300XXXXXXXXXXXX CN=device-01
Initializing the device provisioning client...
Initialized for registration Id device-01.
Registering with the device provisioning service...
Registration status: Assigned.
Device device-01 registered to .azure-devices.net.
Creating X509 authentication for IoT Hub...
Testing the provisioned device with IoT Hub...
Sending a telemetry message...
Finished.

但在Linux容器中运行时出现错误,日志如下:

C:\Projects\Azure\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample>docker run -it --rm x509sample 
Loading the certificate...
certificate.pfx
Found certificate: 84B46F5118AE660329B58BB4D05FXXXXXXXXXXXX CN=Azure IoT Hub CA Cert Test Only; PrivateKey: False
Found certificate: AED34CED0E79056EF6632DD1720BXXXXXXXXXXXX CN=Azure IoT Hub Intermediate Cert Test Only; PrivateKey: False
Found certificate: 95D072F7DF549D3A2A49186B6300XXXXXXXXXXXX CN=device-01; PrivateKey: True
Using certificate 95D072F7DF549D3A2A49186B6300XXXXXXXXXXXX CN=device-01
Initializing the device provisioning client...
Initialized for registration Id device-01.
Registering with the device provisioning service...
Unhandled exception. Microsoft.Azure.Devices.Provisioning.Client.ProvisioningTransportException: {"errorCode":401002,"trackingId":"d95fd59b-d1b0-45e1-a7ef-16d94488075b","message":"CA certificate not found.","timestampUtc":"2023-11-08T00:26:15.7151494Z"}
   at Microsoft.Azure.Devices.Provisioning.Client.Transport.ProvisioningTransportHandlerMqtt.ProvisionOverTcpCommonAsync(ProvisioningTransportRegisterMessage message, ClientTlsSettings tlsSettings, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Provisioning.Client.Transport.ProvisioningTransportHandlerMqtt.RegisterAsync(ProvisioningTransportRegisterMessage message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Provisioning.Client.Samples.ProvisioningDeviceClientSample.RunSampleAsync() in /App/ProvisioningDeviceClientSample.cs:line 46
   at Microsoft.Azure.Devices.Provisioning.Client.Samples.Program.Main(String[] args) in /App/Program.cs:line 30
   at Microsoft.Azure.Devices.Provisioning.Client.Samples.Program.<Main>(String[] args)

异常抛出位置为:

DeviceRegistrationResult result = await provClient.RegisterAsync();

怀疑问题与Linux容器中未安装根证书和中间证书有关,已参考相关文档和GitHub讨论,但仍需进一步帮助。当前使用的Dockerfile如下:

FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine3.18 as build-env
WORKDIR /App

COPY *.csproj .
# Restore as distinct layers
RUN dotnet restore 

# copy and publish app and libraries
COPY . .

# Build and publish a release
RUN dotnet publish   -c Release -o out

FROM mcr.microsoft.com/dotnet/runtime:8.0-alpine3.18
COPY /device-01-full-chain.cert.pfx certificate.pfx
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["./X509Sample"]

内容的提问来源于stack exchange,提问作者MikeF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:34:56