Vzpostavitev TLS Seje

Vse kar se tiče programiranja za internet.
grinta007
Prispevkov: 5
Pridružen: 10.09.2015 17:51:26

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a grinta007 » 03.11.2015 08:48:37

traktor napisal/-a:grinta007 ,
ali bi se dalo dobiti sample source za tvojo rešitev, ker gornje kode nikakor ne morem spreviti v delujoče stanje...
ja, seveda, samo povem kam ti pošljem

yuhuhu
Prispevkov: 19
Pridružen: 25.02.2005 09:54:31

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a yuhuhu » 03.11.2015 16:53:58

pozdravljen,

jaz bi te tudi prosil, če lahko dobim delujoč vzorec...

hvala

naslov:
j.juhuhu@gmail.com

amy7777
Prispevkov: 2
Pridružen: 11.11.2015 11:00:58

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a amy7777 » 11.11.2015 11:19:40

grinta007,
lahko tudi jaz dobim sample source za tvojo rešitev Vzpostavitev TLS seje?
vrne mi napako 'A certificate required..',
imam pfx - file - certifikat na root direktoriju
(tak deluje pri hrvaški fiskalizaciji)
delala sem hrvaško fiskalizacijo,
uporabljala samo THTTPReqResp objekt, lp

grinta007
Prispevkov: 5
Pridružen: 10.09.2015 17:51:26

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a grinta007 » 11.11.2015 15:21:10

ja, hrvati imajo malo drugače, oni delajo preko ssl, mi pa dvosmerne tls.... sem tudi sam delal fiskalizacijo za njih, no, v bistvu sem priredil samo njihov primer za naš program. Je pa to samo malo "predelan" hrvaški primer.
Lahko, če mi poveš kam ti pošljem, javno na net jo ravno ne bi dajal, da mi ne bo pol kdo na šihtu težil.

amy7777
Prispevkov: 2
Pridružen: 11.11.2015 11:00:58

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a amy7777 » 12.11.2015 07:16:24

Če lahko na naslov alenka.gasparec@gmail.com, lp

traktor
Prispevkov: 7
Pridružen: 02.11.2015 14:49:20

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a traktor » 12.11.2015 15:40:49

Pozdravljeni,

Ali je komu uspelo vspostaviti sejo z SecureBlackBox komponentami ?
Jaz počasi ubupavam :)

SimonG
Prispevkov: 86
Pridružen: 12.08.2002 01:04:31

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a SimonG » 12.11.2015 21:29:45

Pozdravljen

Uporabi objekte
MemoryCertstorage
Httpsclient
Certifika x509
Win...store

Pišem na pamet ker nisem za comp-m, v glavnem , poiščeš certifikate ( kje so instalirani ) , potem ga izberes,
In napolnis x509 ter shraniš v memcert storage.
Client cert storage nastavi property na memorycertstorage , nastavi soap client objekt in v soapu nastavis povezavo. Bom prosil sina da objavi par konkretnih vrstic kode...

Lep dan še naprej... Simon

TadejGruber
Prispevkov: 6
Pridružen: 12.11.2015 21:30:34

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a TadejGruber » 12.11.2015 21:53:47

Evo par konkretnih vrstic kode za uporabo SecureBlackBox komponent.

Pridobivanje certifikata:

Koda: Izberi vse

WinCertStorage.SystemStores.Text := Main.StoCert; //'MY'  skupina certifikatov
for i := 0 to WinCertStorage.Count - 1 do begin
    if WinCertStorage.Certificates[i].SubjectName.CommonName.Equals(Main.ImeCert) then begin
        FCert := WinCertStorage.Certificates[i];
            Break;
    end;
end;
ElMemoryCertStorage1.Add(FCert, True);
Vzpostavitev seje in pošiljanje podatkov (ne pozabit še prej nastavit url, namespace, prefix, action in operation atributov za SOAPClient):

Koda: Izberi vse

FSOAPClient.GenerateMessage;
    
FSOAPClient.HTTPClient := HTTPSClient;
FSOAPClient.URL := url;
FSOAPClient.SOAPAction := action;

FSOAPClient.XMLDocument.LoadFromFile('pot_do_xml/nekaj.xml');
FSOAPClient.SOAPMessage.LoadFromXML(FSOAPClient.XMLDocument);

FSOAPClient.SendMessage;
Objektu HTTPSClient je potrebno nastavit ClientCertStorage property na MemoryCertStorage in implementirati dogodek OnCertificateValidate (v katerem nastavimo:

Koda: Izberi vse

Validate := True
Lep Pozdrav,
Tadej Gruber

traktor
Prispevkov: 7
Pridružen: 02.11.2015 14:49:20

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a traktor » 13.11.2015 09:00:30

Hmm ja...
Vse to sem že naredil, pa še vedno se ne uspostavi povezava...
Ali vidiš kaj narobe v spodnji kodi ?

Koda: Izberi vse

//------------------------------------------------------------------------------

procedure TForm21.Button1Click(Sender: TObject);
begin

  try
    ElXMLSOAPClient1.SOAPPrefix := 'soap';

    ElXMLSOAPClient1.SOAPVersion := SOAP_v1_2;

    ElXMLSOAPClient1.OperationName := 'InvoiceRequest';
    ElXMLSOAPClient1.OperationNamespaceURI := 'http://www.fu.gov.si/';

    ElXMLSOAPClient1.MessageNamespaces.AddNamespace('fu', 'http://www.fu.gov.si/');

    ElXMLSOAPClient1.GenerateMessage;

    ElXMLSOAPClient1.HTTPClient := HTTPSClient;
    ElXMLSOAPClient1.URL := 'https://blagajne-test.fu.gov.si:9002/v1/cash_registers';
    ElXMLSOAPClient1.SOAPAction := '/echo';

    ElXMLSOAPClient1.XMLDocument.LoadFromFile('D:\temp\ECHO nepodpisan.xml');

    ElXMLSOAPClient1.SOAPMessage.LoadFromXML(ElXMLSOAPClient1.XMLDocument);

    ElXMLSOAPClient1.SendMessage;

  except
    on E : Exception do
    begin
      MessageDlg('Failed to send SOAP message: ' + E.Message, mtError, [mbOk], 0);
    end;
  end;

end;

//------------------------------------------------------------------------------

procedure TForm21.HTTPSClientCertificateNeededEx(Sender: TObject;
  var Certificate: TElX509Certificate);
var i : Integer;
   Cert : ElX509Certificate;
begin

  ElWinCertStorage1.systemstores.Add('MY');


  for i := 0 to ElWinCertStorage1.Count-1 do
  begin
    if ElWinCertStorage1.Certificates[i].SubjectName.CommonName = 'TESTNO PODJETJE 461' then
    begin
      Cert := (ElWinCertStorage1.Certificates[i]);
      break;
    end;
  end;

  Certificate := Cert;

end;

//------------------------------------------------------------------------------

procedure TForm21.HTTPSClientCertificateValidate(Sender: TObject;
  X509Certificate: TElX509Certificate; var Validate: Boolean);
begin
  Validate := true;
end;

//------------------------------------------------------------------------------

Vedno bol sumim, da je nekaj narobe s certifikatom... Ali lahko kdo stestira gornjo kodo :)

TadejGruber
Prispevkov: 6
Pridružen: 12.11.2015 21:30:34

Re: Vzpostavitev TLS Seje

Odgovor Napisal/-a TadejGruber » 13.11.2015 09:21:38

V kolikor vidim imaš napako tukaj:

Koda: Izberi vse

ElXMLSOAPClient1.SOAPAction := '/echo'
Od operation je odvisen action, torej:
InvoiceRequest ----> /invoices
BusinessPremiseRequest ----> /invoices/register
EchoRequest ----> /echo

Kar pomeni, da potrebuješ za račun:

Koda: Izberi vse

ElXMLSOAPClient1.SOAPAction := '/invoices'
Ali mogoče še zraven ClientCertificateNeededEx dogodka uporabljaš objekt MemoryCertStorage?
Pa še, kakšno napako javi pri povezovanju?

Odgovori