Pangalink 30 minutiga

Kui vajad abi pangalingi jaoks sertifikaadi genereerimisel – siis kasuta meie kaupmehe salajase võtme ja sertifikaadi generaatorit pangalinkide jaoks (testitud ja toimib – seisuga 2016 suvi).

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:

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

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 (enam ei toimi). 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.

13 thoughts on “Pangalink 30 minutiga”

  1. 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

  2. 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

  3. Tere,

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

    Ette tänades

  4. 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 🙂

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

  6. 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?

  7. 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.

  8. 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?

  9. 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?

Comments are closed.