Мы пытаемся изучить Azure Stream Analytics в IoT Edge. Мы следуемэтотруководство.
Мы проделали следующие шаги:
- Создана одна виртуальная машина Windows.
- Создано одно устройство Edge
- Создано на модуле Azure Stream Analytics, настроены входные данные, выходные данные и запросы.
- Добавлен смоделированный датчик температуры и влажности Датчик из Azure Market Place
- Добавлен модуль Azure Stream Analytic
- Настройте маршруты, как указано в руководстве, и разверните их на устройстве Edge (виртуальная машина Azure).
Используя команды, я могу увидеть 4 элемента в устройстве (Windows VM). Имитированный датчик отправляет данные, но запрос не запускается, записано в задании ASA. При проверке журналов edgeHub мы обнаружили следующую ошибку:
TLS-рукопожатие не удалось., System.AggregateException: произошла одна или несколько ошибок. (Учетные данные, предоставленные пакету, не распознаны) ---> System.ComponentModel.Win32Exception: Учетные данные, предоставленные пакету, не распознаны в System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) в System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) в System.Net.Security.SslStreamPal.AcquireCredentialsHandle(X509Certificate certificate, SslProtocols protocols, EncryptionPolicy policy, Boolean isServer) в System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint, Byte[] clientHello) в System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) в System.Net.Security.SecureChannel.NextMessage(Byte[] input, Int32 offset, Int32 count) в System.Net.Security.SslState.StartSendBlob(Byte[] input, Int32 count, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в System.Net.Security.SslState.ThrowIfExceptional() в System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) в System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) в System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) в System.Net.Security.SslStream.<>c.b__50_2(IAsyncResult iar) в System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requireSynchronization) --- Конец трассировки внутреннего стека исключений --- ---> (Внутреннее исключение № 0) System.ComponentModel.Win32Exception (0x8009030D): Учетные данные, предоставленные пакету, не распознаны в System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface secModule, String package, CredentialUse intent, SCHANNEL_CRED scc) в System.Net.Security.SslStreamPal.AcquireCredentialsHandle(CredentialUse credUsage, SCHANNEL_CRED secureCredential) в System.Net.Security.SslStreamPal.AcquireCredentialsHandle(сертификат X509Certificate, протоколы SslProtocols, политика EncryptionPolicy, логическое значение isServer) в System.Net.Security.SecureChannel.AcquireServerCredentials(Byte[]& thumbPrint, Byte[] clientHello) в System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) в System.Net.Security.SecureChannel.NextMessage(Byte[] input, Int32 offset, Int32 count) в System.Net.Security.SslState.StartSendBlob(Byte[] input, Int32 count,AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) в System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- Конец трассировки стека из предыдущего местоположения, где было выдано исключение --- в System.Net.Security.SslState.ThrowIfExceptional() в System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) в System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) в System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult) в System.Net.Security.SslStream.<>c.b__50_2(IAsyncResult iar) в System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requireSynchronization)<--- , 1b20a2d4
Мы создали сертификаты OpenSSL на виртуальной машине и настроили их в config.yaml, после чего при проверке журналов мобильного устройства ASA или модуля Simulated Sensor возникла ошибка.