お世話に成ります。
Unity上でWebSocket-sharpを利用してクライアントとサーバを立てました。
やってみた事以下の組み合わせでクライアントとサーバーで通信しました。
クライアント サーバー
unity ws unity ws 〇
unity ws wscat ws 〇
unity wss unity wss ×
unity wss aws wss ×
wscat wss aws wss 〇
〇がconnectが成功しセッションが開設しましたものです。
unityの時だけセキュア(wss)だとどうやってもconnect時のハンドシェイクでエラーに成りそのままcloseしてしまいます。
dllにしないでプロジェクト毎unityにコピーしてデバッグした所
dohandshake→setClientStream→sslStream.AuthenticateAsClientで例外になっているみたいでした。
コード1015でTLSハンドシェイクの証明書関連エラーに見えます。
サーバーとクライアントのコードを添付します。見た感じおかしい箇所や、証明書に関する常識等ご教示いただけますでしょうか?
よろしくお願いいたします。
c#
1クライアント側 2 void Start(){ 3 _ws = new WebSocket("wss://localhost:5963"); 4 _ws.Log.Level = LogLevel.Trace; 5 _ws.SslConfiguration.ClientCertificates = new X509Certificate2Collection(){new X509Certificate2("C:/oreoreCA/サーバーの中間証明書.pem","*******")}; 6 7 _ws.OnOpen += (sender, e) =>{ 8 Debug.Log("WebSocket Open"); 9 }; 10 11 _ws.OnMessage += (sender, e) => 12 { 13 Debug.Log("WebSocket Message Type: " + e.Data + ", Data: " + e.Data); 14 }; 15 16 _ws.OnError += (sender, e) => 17 { 18 Debug.Log("WebSocket Error Message: " + e.Message); 19 }; 20 21 _ws.OnClose += (sender, e) => 22 { 23 Debug.Log("WebSocket Close"); 24 }; 25 26 _ws.Connect(); 27 }
C#
1サーバー側 2 void Awake (){ 3 var wssv = new WebSocketServer ("wss://localhost:5963"); 4 wssv.SslConfiguration.ServerCertificate = new X509Certificate2("C:/oreoreCA/中間証明書.pem","*******"); 5 6 wssv.AddWebSocketService<Echo>("/"); 7 8 wssv.Start(); 9 if (wssv.IsListening) { 10 Console.WriteLine ("Listening on port {0}, and providing WebSocket services:", wssv.Port); 11 foreach (var path in wssv.WebSocketServices.Paths) 12 Console.WriteLine ("- {0}", path); 13 } 14 15 Console.WriteLine ("\nPress Enter key to stop the server..."); 16 //Console.ReadLine (); 17 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/23 04:11