Pangalink 30 minutiga

12.12.2006
By

Veebi kaudu maksmine on muutumas üha igapäevasemaks. Automaatne, mugav ja kaupmehe sekkumiseta üle veebi toimiv makselahendus on populaarsust kogumas ning sellest annavad tunnistust ka meie klienditoele üha rohkem laekuvad küsimused “Kas teie server toetab pangalinki?” või “Kuidas ma saaks omale pangalingi installeerida?”.

Saladuskatte all võib mainida, et jah, meie serverid toetavad pangalinki :)

Pangalink on süsteem, mille abil saavad Internetikaupmehed, Panga kliendid ja Pank vahetada andmeid, osutada teenuseid ja käivitada tegevusi.

Pangalink võimaldab kokkulepitud vormis, etteantud parameetritega, alustada tegevusi ja saada vastuseid.

Pangalingi tehniline lahendus on samasugune nii Swedbank-i, Sampo kui ka SEB puhul.

Pangalingi toimima saamiseks on vaja:

  1. Sertifikaadi päringut + privaatset võtit
  2. Lepingut pangaga ning unikaalset kaupmehe koodi (mis antakse panga poolt peale lepingu sõlmimist)
  3. Pangalingi programmi, mis oskab andmeid kokkulepitud pangalingi protokolli panna, et neid panka saata ning panga poolt saadetud vastuseid lugeda.

Järgnevalt siis veidi lähemalt esimese ja kolmanda punkti kohta.

Sertifikaadi päring + privaatne võti

Sertifikaadi päring, mis sisaldab avalikku võtit ning selle juurde kuuluv privaatne võti moodustavad asümmeetrilise krüptograafia vormi, mille abil kõik andmed, mis krüpteeritakse või signeeritakse privaatse võtmega, on loetavad või kontrollitavad ainult vastava avaliku võtmega. Privaatset võtit ei tohi teada ega omada keegi muu, kui ainult see isik, kes selle privaatse ja avaliku võtmepaari omale teinud on. Avalikku võtit tohivad teada ka teised isikud. Kui privaatne võti lekib, siis on võtme omajal võimalik andmeid võltsida. Pangalingi puhul on kaupmehe privaatse võtme omanikul võimalik panka saadetavaid andmeid võltsida ning panga privaatse võtme omajal võimalik pangast tulevaid vastuseid võltsida.

Pangalingi puhul on nii kaupmehel kui ka pangal oma privaatse+avaliku võtmepaar. Lepingu sõlmimisel annab kaupmees pangale oma avaliku võtme (sertifikaadi päringu faili näol) ning pank kaupmehele oma avaliku võtme.

Kui kaupmees hakkab pangalinki kasutama ning tehinguid panka saatma, siis saadab ta iga tehinguga kaasa ka kontrollsumma ehk signatuuri. Pank kontrollib seda kaupmehe avaliku võtmega ning kui see signatuur pole loodud kaupmehe privaatse võtme abil (millele ainult sellel kaupmehel ligipääs tohib olla), siis pole tegemist õige kaupmehega vaid keegi pahalane üritab näiteks kaupmehe nime alt midagi kahtlast korda saata. Samamoodi, kui tuleb pangast päring kaupmehele, siis genereerib pank saadetud andmetele kontrollsumma ning signeerib selle oma privaatse võtmega. Kaupmees kontrollib signatuuri samamoodi panga avaliku võtme abil ning kui signatuur pole õige, siis on tegemist näiteks ründega veebipoe pihta.

Võtmeid saab luua openssl utiliidi abil, kuid Zone kliendil on lihtsam seda teha DataZone haldusliidese kaudu. Seal tuleb täita lihtsalt sertifikaadi päringu jaoks vajalik personaalne informatsioon ning seejärel saab genereeritud failid alla laadida. NB! Privaatset võtmefaili ei tohi kindlasti kellelegi teisele kättesaadavaks teha!

Privaatse võtmefail näeb seest välja selline:

test_private_key_pem.JPG

Sertifikaadi päringu fail näeb seest välja selline:

test_cert_req_pem.JPG

Mõlemad failid on PEM vormingus, mis tähendab seda, et nende sisu on BASE64 kodeeringus ning pandud “—–BEGIN …—–” ja “—–END …—–” märgendite vahele.

Pangalingi programm

Zone serverid toetavad PHP-d ning OpenSSL moodulit. Nendest kahest piisab täiesti, et pangalink tööle saada ning ühtegi muud välist programmi vaja pole.

Meisterdasin näiteks hästi lihtsa pangalingi skriptikese (tegelikult koosneb see küll kolmest erinevast failist), mis signeerib tehingu andmed, koostab pangalingi vormi ning loeb ja kuvab pangast tulnud vastuse.

Programm koosneb siis kolmest failist:

  • pay.php – Peamine fail, mis käivitatakse tehingu algatamiseks
  • notify.php – Käivitub pangast tuleva teate vastu võtmiseks
  • config.php – Üldine fail seadistustega, mis on ühised nii pay.php kui ka notify.php puhul

Siit saab tõmmata ka kõik need kolm faili ühtse TARGZ arhiivina.

Skriptide testimiseks sobib hästi Andris Reinmani poolt loodud www.pangalink.net testkeskkond. Lisaks pakub eraldi testsüsteemi võimalust ka näiteks SEB. Peale keskkonnale ligipääsu saamist tuleb config.php failis $preferences massiivis muuta atribuute:

  • my_private_key – sinu privaatse võtmefaili asukoht. NB! See fail ei tohi olla veebi kaudu kättesaadav!
  • bank_certificate – panga avaliku võtmefaili asukoht
  • my_id – panga poolt sulle antud kaupmehe identifikaator
  • account_number – pangakonto, kuhu maksed hakkavad laekuma
  • account_owner – pangakonto omaniku nimi
  • bankname -  ‘swedbank’, ‘seb’ või ‘sampo’

Kui pangalink on tööle saadud ning toimib, siis siit edasi võiks kaupmees mõelda juba oma veebipoe turvamise peale. Selleks tuleks veebipood tööle panna üle krüpteeritud ühenduse – HTTPS. Kasutades HTTPSi näitab kaupmees oma kliendile, et ta pöörab turvalisusele tähelepanu ning äratab kliendi silmis suuremat usaldust.

HTTPSi saab Zone virtuaalserveris tööle panna lihtsalt. Selleks on vaja meie klienditoe kaudu tellida pakett III koos eraldi IP aadressiga (kui seda veel pole) ning seejärel teha DataZone haldusliideses paar klikki HTTPSi aktiveerimiseks.

Seotud postitusi ei leitud.

Tags: , , , ,

13 Responses to Pangalink 30 minutiga

  1. Gunnar on 11.01.2007 at 15:43

    30 minutit kulub ühe pisikese tegevuse peale, mis pangalinkidega seotud. Tellijaid huvitab enamasti kogu protsessi kestus ja sisu. Seepärast kirjutasin vastusena DT blogisse pisikese kande teemal Kuidas valmib pangalinkide tugi.

  2. Tormi on 04.05.2007 at 22:08

    Tere.

    Aitäh programmifailide eest! Leidsin failist pay.php väikese näpuvea, nimelt rida 49 peaks

    dirname ($PHP_SELF) . ‘/notify.php’,

    asemel olema kujul

    dirname($_SERVER[PHP_SELF]) . ‘/notify.php’,

    Terv,
    Tormi

  3. Margus on 10.10.2008 at 15:36

    Tsiteerin : “Võtmeid saab luua openssl utiliidi abil, kuid Zone kliendil on lihtsam seda teha DataZone haldusliidese kaudu.”

    Ma pole kahjuks Zone klient, kuid kuidas oleks võimalik neid openssl i abil luuba. Programm on tõmmatud, aga teha ei oska.

    Vastust ootama jäädes

  4. margus [at] zone on 11.10.2008 at 15:14

    Ise saad võtme ja sertifikaadipäringu genereerida “openssl” utiliidi abil.

    Windowsi alla saab selle tirida siit: http://www.slproweb.com/products/Win32OpenSSL.html

    Võtme genereerimine: openssl genrsa -out PRIVATE_KEY.PEM 1024
    Päringu genereerimine: openssl req -new -key PRIVATE_KEY.PEM -out CERTIFICATE_REQUEST.PEM

  5. Margus on 18.10.2008 at 18:16

    Tere,

    tirisin selle openssli ära, aga kust pean mida avama või tegema ja kuhu pean need päringud kirjutama ?

    Ette tänades

  6. margus [at] zone on 20.10.2008 at 11:53

    Kui oled OpenSSL-i ära installinud, siis tekib sul (ilmselt arvuti juurkataloogi) kataloog ‘openssl/bin’, kus all on openssl.exe. Seda saab käivitada käsurealt (start -> run -> cmd). Käivita seda eelpool nimetatud parameetritega.

    P.S. Käesolev kommentaarium siin pole OpenSSL-i klienditugi, seega soovitan edasipidi võtmete/päringute genereerimise osas otsida ise abi Googlest :)

  7. Mart on 14.03.2009 at 17:23

    Suured tänud koodi avaldamise eest!
    Selleabil saab pangalingi kohe väga lihtsalt-kiirelt käima,
    jejeee! :D

  8. Marko on 07.07.2009 at 16:11

    Mulle jäi arusaamatuks see et kuidas openssl tuge serverisse panna? näiteks käsk:

    $key = openssl_pkey_get_public (file_get_contents ($preferences['bank_certificate']));

    ei lähe läbi mul. Kas see OpenSSL kataloog peab mul olema veebiserveris?

  9. Margus on 07.07.2009 at 16:27

    marko: Zone virtuaalserveris ei ole vaja Sul midagi rohkem serverisse paigaldada sest kõik on vaikimisi olemas.

    Kui hätta jääd, siis saada abi@zone.ee peale domeeninimi ja pangalingi skriptide kataloog ning sealt saad abi.

    Kui Sa ei räägi Zone virtuaalserverist siis peaksid pöörduma ilmselt selle teenusepakkuja klienditoe poole, kellelt veebiserveri teenust rendid.

  10. Marko on 08.07.2009 at 08:03

    Ma ei räägi jah Zone virtuaalserverist vaid oma firmas kasutatavast serverist. Saab mingeid näpunäiteid kuidas OpenSSL tuge paigaldada või kuidas VK_MAC arvutada kui mul on olemas privaatvõti.pem ja sertifikaat.pem failid?

  11. Margus on 08.07.2009 at 09:32

    marko: http://ee.php.net/manual/en/openssl.installation.php

    Ja Googlest leiad PHP kompileerimise ja openssli paigalduse kohta veel rohkem infot.

  12. Marko on 08.07.2009 at 10:01

    Ma ikka ei saa aru kuidas toimub VK_MAC arvutamine kui mul on olemas privaatvõti.pem ja sertifikaat.pem failid. Kas IGA kord kui pangalingile klõpsatakse on VK_MAC väärtus erinev või see on koguaeg kindla väärtusega?

  13. Margus on 08.07.2009 at 10:49

    MAC on samade sisendandmete puhul alati sama.