2017-10-16 709 views
0

我們已經有一個較舊的VB .NET(Visual Studio 2013社區版)代碼片段,當前與一個PLC通過UDP進行通信,其中一些基本數據傳輸。OPC UA客戶端 - BadCertificateHostNameInvalid - opcfoundation.org

現在我們需要PLC和PC之間更緊密的耦合(PC必須能夠設置一堆參數,而Labview程序可能需要直接訪問PLC),所以我們的PLC供應商(B & R )表示,OPC UA是要走的路。

這似乎相似,這裏提出的問題:

OPC-UA client SDK for C#.NET application development

在介紹性研討會,OPC UA,我們得到了編制的OPC UA客戶端的版本,如果我火了一個PLC模擬器中,客戶端可以連接到PLC模擬器。當然,它要求提供一個名稱和一個密碼,但彈出式窗口會顯示我說要嘗試連接,我得到一個UA示例客戶端的彈出窗口,其中顯示「證書無法驗證:BadCertificateUntrusted」

好的,我沒有證書。點擊後,客戶端繼續向前,並顯示一個由PLC代碼暴露給OPC UA的所有元素的樹。一切都很好。

現在,如果我從opcfoundation.org網站下載完整代碼,則在確認我沒有有效證書後,可以編譯代碼但是,在確認我沒有有效證書後,窗口彈出,上面寫着:

異常(ServiceResultException) BadCertificateHostNameInvalid 服務結果(BadCertificateHostNameInvalid)

這些都是OPC UA 1.02,BTW。

是否有其他地方需要配置?我注意到有幾個XML文件(Opc.Ua.SampleClient.Config.xml和Opc.Ua.SampleClient.Endpoints.xml),我想知道他們是否需要修改以擺脫此停止。

我確實記得,如果你自動地允許它是OK(當然),那麼某些東西就不符合OPC UA標準,所以你不能只是自動地發生這種情況,但這對我來說沒問題。

使用OPC UA代碼的缺點是它有點深(如用戶Brino在原始的StackOverflow文章中指出的那樣),並且它需要您自己的代碼在GPL下發布,所以Unified-Automation看起來很誘人,因爲我們可能不想發佈我們的源代碼。

對這個問題有什麼想法?

回答

1

您看到的警告和例外與您的證書不同,但服務器正在返回證書。

BadCertificateHostNameInvalid StatusCode表示服務器的主機名在證書中根本不存在SubjectAltName,或者與實際用於連接到服務器的主機名不匹配。

如果可能的話,選擇SecurityPolicy「無」,看看事情是否按照你的期望工作。之後,您可以專注於整理證書情況。您可能需要在服務器中設置適當的主機名,然後重新生成使用新主機名的證書。您可能還需要確保您的客戶機可以解析服務器配置爲使用的任何主機名,以便您可以使用該主機名進行連接。

缺點使用OPC UA代碼,這是一個有點深(由用戶Brino原StackOverflow的文章中指出),並且,它需要自己的代碼GPL下發布,所以Unified-自動化看起來很誘人,因爲我們可能不想發佈我們的源代碼。

這隻有在你不是OPC基金會成員的情況下才是正確的。如果您是會員,則可以自由使用該代碼而無需分發源代碼。有關更多信息,請參閱頭文件,並諮詢基金會「RCL」許可證的實際文本。