亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用 WCF 的 Java 應用程序返回“連接重置”,而 SoapUI 工作正常

調用 WCF 的 Java 應用程序返回“連接重置”,而 SoapUI 工作正常

波斯汪 2022-12-28 14:31:57
我有一個 C# MVC 應用程序(.NET Framework 4.6.2)和一個位于應用程序內部 /webservice 的 WCF(基于 soap)Web 服務。WCF Web 服務供第 3 方供應商調用并將其數據推送到。我們在 Windows Server 2016 服務器上的測試環境中有應用程序,端口 80 和 443 打開并且我們的證書不是自簽名和有效的。當我們使用 SoapUI 測試服務時,我們能夠正確訪問 WCF Web 服務并將測試數據發布到服務器,但是當我們的供應商從他們的 Java 應用程序發布數據時,他們會得到“連接重置”。我們已經刪除了所有身份驗證,只是試圖讓它們到達 WCF,但我們的 IIS 日志和應用程序日志甚至沒有顯示它們訪問了我們的服務器。SoapUI(在我們的網絡/防火墻內部和外部)能夠正確訪問該服務。<system.serviceModel><diagnostics>  <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="3000"/></diagnostics><bindings>  <basicHttpBinding>    <binding name="basicBinding" textEncoding="utf-8" openTimeout="00:03:00" closeTimeout="00:03:00"/>  </basicHttpBinding></bindings><services>  <service behaviorConfiguration="serviceBehavior" name="WebServiceUniqueName">    <endpoint address="/endpoint/soap" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="soapEndpoint" bindingNamespace="https://test.site.com/webservice" contract="Our.Namespace.ISoapContract"/>    <endpoint address="mex" binding="mexHttpBinding" name="mexEndpoint" contract="IMetadataExchange"/>    <host>      <baseAddresses>        <add baseAddress="/webservice/servicename"/>      </baseAddresses>    </host>  </service></services>我們的服務器使用 TLS 1.2 并回退到 1.1(這正是供應商所期望的)。我們的防火墻沒有顯示任何被阻止的內容,并且“連接重置”消息是在他們請求的前幾秒內出現的。第 3 方能夠從他們的瀏覽器訪問 WSDL,所以所有這些讓我相信在握手過程中出現了故障。SoapUI 正在通過并在 Java 上運行,所以我們在這一點上真的很困惑。調用 C# WCF 應用程序的 Java 是否需要額外的東西?有沒有辦法捕獲握手嘗試?更多測試后更新:我們采納了 Sambit 的建議并使用了 Microsoft Web 服務客戶端,并且沒有任何問題。我們創建了另一個測試 WCF,還創建了一個調用我們的服務器的應用程序,并將兩者都毫無問題地放在 Azure 中。我們可以訪問我們的 Web 服務,但供應商仍然無法訪問服務器。我們添加了更多日志記錄并查看了防火墻,來自供應商的流量正在通過防火墻到達服務器,但報告“從服務器重置 TCP”。第 3 方供應商的應用程序托管在共享環境中,他們能夠在他們的服務器上運行命令,但他們不能更改任何代碼來記錄額外信息。他們能夠 ping 我們的服務器并運行以下命令:nc -zv (server_url) 443并且連接成功但是當他們試圖從服務器獲取證書時失敗了:openssl s_client -tls1_2 -showcerts -connect (server_url):443已連接(00000003)寫:errno=104--- 沒有可用的對等證書--- 未發送客戶端證書 CA 名稱
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

在雙方很多非常聰明的人的幫助下,問題最終變成了服務器名稱指示(SNI):

https://en.wikipedia.org/wiki/Server_Name_Indication

供應商的應用程序正在運行不理解/不支持 SNI 的舊版本 Java,他們目前無法升級。

我們的服務器管理員在我們的 Windows 服務器上為供應商調用的域專用了一個 IP,并為該特定域禁用了 SNI。我們現在可以毫無問題地接收供應商的 Web 服務器調用。


查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號