<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: .NET SDK - Certificate Authentication Handshake error in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/NET-SDK-Certificate-Authentication-Handshake-error/m-p/1215713#M6265</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Added the port 4747 solved my problem!&lt;/P&gt;&lt;P&gt;It is working fine now!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 05 Feb 2017 22:43:37 GMT</pubDate>
    <dc:creator>pamaxeed</dc:creator>
    <dc:date>2017-02-05T22:43:37Z</dc:date>
    <item>
      <title>.NET SDK - Certificate Authentication Handshake error</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/NET-SDK-Certificate-Authentication-Handshake-error/m-p/1215712#M6264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am trying to access the Qliksense Server (3.1.5) using Certificate Method from a webapi application (hosted on an IIS server installed on the Qliksense&amp;nbsp; server).&lt;/P&gt;&lt;P&gt;Neither https and http are working when trying to authenticated via Qlik Engine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Following error message is returned:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Http (suppose relies on SSL):&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: 'courier new', courier;"&gt;HTTP request failed! - Status 500: Internal Server Error | {"Message":"Connection failed after 4 attempts. Error message:\r\n&amp;nbsp; The handshake failed due to an unexpected packet format.\r\n&amp;nbsp; The handshake failed due to an unexpected packet format.\r\n&amp;nbsp; The handshake failed due to an unexpected packet format.\r\n&amp;nbsp; The handshake failed due to an unexpected packet format."}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Https:&lt;BR /&gt;&lt;SPAN style="font-size: 8pt; font-family: 'courier new', courier;"&gt;Error: Unable to read data from the transport connection: An established connection was aborted by the software in your host machine.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code Snippet:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Host: ServerIP&lt;/LI&gt;&lt;LI&gt;Port: Empty string&lt;/LI&gt;&lt;LI&gt;QSCERT: client.pfx&lt;/LI&gt;&lt;LI&gt;QSPWD: 123 (same as indicated during the certificate export via QMC)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c#" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14863271067653942 jive_text_macro" jivemacro_uid="_14863271067653942"&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var uri = new Uri(host + port);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ILocation location = Qlik.Engine.Location.FromUri(uri);&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509Certificate2 x509 = new X509Certificate2();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PAM: Create X509Certificate2 object from .cer file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Util.WriteLog("Info: Certificate -&amp;gt; " + QSCERT);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] rawData = File.ReadAllBytes(System.Web.HttpContext.Current.Server.MapPath("~/Certificate/") + QSCERT);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Util.WriteLog("Info: Certificate Pwd -&amp;gt; " + QSCERTPWD);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x509.Import(rawData, QSCERTPWD, X509KeyStorageFlags.MachineKeySet);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X509Certificate2Collection certificateCollection = new X509Certificate2Collection(x509);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Defining the location as a direct connection to Qlik Sense Server&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location.AsDirectConnection(domain, userId, certificateValidation: QSCERTVALIDATION,&amp;nbsp; certificateCollection: certificateCollection);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return location;&lt;/P&gt;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The client certificate was exporter from the QMC adding the IP Adress of the server where the webapi code is executed (same as Qliksense server):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG __jive_id="152063" alt="Capture.PNG" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/152063_Capture.PNG" style="height: 252px; width: 620px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And imported in the Local Store of the Local Machine:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG __jive_id="152069" alt="Capture2.PNG" class="jive-image image-2" src="https://community.qlik.com/legacyfs/online/152069_Capture2.PNG" style="height: 309px; width: 620px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And finally added in the folder of my webapi application:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG __jive_id="152071" alt="capture3.PNG" class="jive-image image-3" src="https://community.qlik.com/legacyfs/online/152071_capture3.PNG" style="height: 177px; width: 620px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What is my mistake in all the procedures?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;BR /&gt;Patric&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 Feb 2017 20:50:23 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/NET-SDK-Certificate-Authentication-Handshake-error/m-p/1215712#M6264</guid>
      <dc:creator>pamaxeed</dc:creator>
      <dc:date>2017-02-05T20:50:23Z</dc:date>
    </item>
    <item>
      <title>Re: .NET SDK - Certificate Authentication Handshake error</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/NET-SDK-Certificate-Authentication-Handshake-error/m-p/1215713#M6265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Added the port 4747 solved my problem!&lt;/P&gt;&lt;P&gt;It is working fine now!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 Feb 2017 22:43:37 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/NET-SDK-Certificate-Authentication-Handshake-error/m-p/1215713#M6265</guid>
      <dc:creator>pamaxeed</dc:creator>
      <dc:date>2017-02-05T22:43:37Z</dc:date>
    </item>
  </channel>
</rss>

