2017-01-06 6 views
4

Mqtt를 사용하여 Azure IoT 허브에 일부 데이터를 게시하려고합니다. SAS 토큰을 사용하여 일부 데이터를 성공적으로 게시했습니다.Azure IoT 허브 인증서

그러나 내 고객은 x509 자체 생성 & 자체 서명 인증서를 원합니다. Azure는 이것을 지원하지만 그에 관한 많은 정보를 제공하지 않습니다.

자체 생성 자체 서명 된 X-509 인증서 (https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security#supported-x509-certificates)

. 장치 제조업체 또는 사내 구축 업체는 이러한 인증서를 생성 할 수 있으며 은 해당 개인 키 (및 인증서)를 장치에 저장합니다. 이 목적으로 OpenSSL 및 Windows SelfSignedCertificate 유틸리티와 같은 도구를 사용할 수 있습니다.

만약 IoT 허브는 전체 X.509 인증서를 요구하거나 저장하지 않습니다 만 지문.

내가 한 것은 CA 인증서와 키입니다.

$openssl req -newkey rsa:2048 -x509 -nodes -sha256 -days 365 -extensions v3_ca -keyout ca.key -out ca.crt 

는 요청을 체결 클라이언트 키와 서명 요청

$openssl genrsa -out client.key 2048 

$openssl req -new -sha256 -out client.csr -key client.key 

을 만든 내가 모뎀 클라이언트 키와 인증서를 업로드 한 인증서

$openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl -out client.crt -days 365 

를 만들었습니다. 그리고 클라이언트 인증서의 지문을 삽입했습니다.

모뎀이 성공적으로 연결될 수 있습니다. myhub.azure-devices.net/deviceId (port 8883) 그러나 새 데이터가 도착하면이를 디코딩 할 수 없습니다.

나는이 시점부터 다소 방해받습니다. 나는 MqttFx를 사용하려했지만 행운이 없었다.

누군가 나를 올바른 방향으로 밀어 넣을 수 있습니까?

+0

해야 포트는 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support에 따라, SSL에 대한 1883 대신 8883 일 – HydTechie

답변

1

나는이 문제를 해결했습니다 CA Root Certificate Azure SDK :

구성된 CA 인증서가 푸른 인증서이어야합니다. 볼티모어 루트 인증서를 사용했습니다.

클라이언트 인증서와 키가 정확합니다. 클라이언트 인증서의 SHA1 지문은 Azure IoT 허브에 전달되어야합니다.

저는 Mqtt 클라이언트로 Paho을 사용했습니다.

마지막으로 서버 연결시 모뎀 오류가 발생했습니다. 모뎀 내부의 시간은 여전히 ​​기본 (1-1-2004)이며 모뎀은 유효하지 않은 현재 시간 (1-1-2004)으로 인증서의 시간을 확인하므로 연결할 수 없습니다.

0

Azure IoT C# SDK를 사용하려는 사용자는 Azure IoT에 등록 된 장치에 OpenSSL 자체 서명 및 자체 생성 X509 인증서를 연결하는 방법을 보여주는 C# 기반 코드 샘플을 만들었습니다 허브에 연결 한 다음 후속 런타임 작업 (특히 원격 측정 메시지 보내기)에서 인증서 (기본 또는 보조)를 사용하십시오.

MQTT 또는 HTTPS를 전송 계층으로 사용할 수 있습니다.

https://github.com/tamhinsf/SimpleAzureIoTCerts/

관련 문제