PHP i certifikati / moze pomoc?

Mar 19, 2013 at 2:35 PM
Edited Mar 19, 2013 at 2:51 PM
Pokušavam u php-u napraviti signanje ovih xmla i slanje računa no uvjek neki problemi.

1) preuzeo sam root certifikat i instalirao isto tako exportirao sam ga i on stoji na desktopu
2) preuzeo sam onaj drugi certifikat CSP te sam ga instalirao i exportao na desktop
3) imam xampp, ukljucio sam extension=php_openssl.dll u php.ini
4) skinuo sam https://github.com/grizwako/Fiskalizator_PHP i Generarator_xml4Fiskalizator_HTML
5) promjenio sam:
  • u index.php-u od ovog Generarator_xml4Fiskalizator_HTML...
    $gen->certPath = 'fiskal1.p12'; -------- zamjenio sam onim novim koji sam preuzeo
    $gen->certPass = 'testnasifra';
    kreirao sam xmldokumenti/ i ispunio sve ono oib itd kako treba biti
    6) kada pokušam loadati index.php preusmjerava me na www.localhost.com/fiskal/
    7) nakon nekog vremena više ne preusmjerava, PoslPr2301.xml u xmldokumenti/ je kreiran ali stranica izbaci grešku Veza je prekinuta. Dokument ne sadrži podatke.
ne razumijem...

public $tns = 'http://www.apis-it.hr/fin/2012/types/f73';
čemu ovo služi? tko je apis to mora tako biti ili ne?

ovo se nalazi u CIS_Service.php
private $url = 'https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest';
jel ovo dobar url za testiranje?

private $caCert = 'certificates/demo/ssl_cis.crt';
ovi certifikati su došli s primjerom, trebam li ih zamjeniti nekim drugim?


puno hvala na bilo kakvoj pomoći!
Mar 19, 2013 at 3:23 PM
neznam kako si to složio, ali ako koristiš ista imena fajlova onda moraš pokrenuti example.php

i provjeri si da ti nije na serveru blokiran port 8449, lako moguće da je.

Apis je "proizvođać" softvera za poreznu, ta dva linka moraju biti takva i ispravna su.
Mar 19, 2013 at 3:42 PM
ovo testiram lokalno u xamppu, trebam napravit portforward za 8449 preko t-com routera na moj komp to mislis?
Mar 19, 2013 at 3:59 PM
example.php me i dalje preusmjeruje na www.localhost.com

moja adresa u browseru (xampp)
http://localhost/fiskal/example.php

load..., 5 sekundi

i onda me prebaci na http://www.localhost.com/fiskal/example.php
Mar 19, 2013 at 8:42 PM
ok pokusavam s http://127.0.0.1/fiskal/ i ovako me ne preusmjerava na www.localhost.com ali opet imam problema s navedenim gore

7) nakon nekog vremena više ne preusmjerava, PoslPr2301.xml u xmldokumenti/ je kreiran ali stranica izbaci grešku Veza je prekinuta. Dokument ne sadrži podatke.

sto god pokusam ne mogu pronaci gresku. pokusao sam liniju po liniju die('da'); te sam dosao sve do

Certificate.php
openssl_sign($string, $signature, $this->getPrivateKey(), OPENSSL_ALGO_SHA1);

ovdje zastane, nakon ovoga nista se vise ne desava.
Mar 19, 2013 at 10:07 PM
evo naisao sam na ovo... https://bugs.php.net/bug.php?id=46149&edit=1 al nije mi jasno kako svima vama radi a meni ne??

ako stavim OPENSSL_PKCS1_OAEP_PADDING onda prođe i dobijem:
_
Warning: openssl_sign(): Unknown signature algorithm. in C:\xampp\htdocs\fiskal\Certificate.php on line 129
Warning: openssl_sign(): Unknown signature algorithm. in C:\xampp\htdocs\fiskal\Certificate.php on line 129
CODE2: Certifikat nije izdan od strane FINA-e.Success
JIR:
ZKI:_

Info o mojim certifikatima:
slijedio sam sve upute kako kažu u mailu od fine, jedino što je meni ovaj CSP certifikat prebacilo u .p12 a vidim da svo ovdje koriste .pfx
Mar 20, 2013 at 11:18 AM
if(!extension_loaded('openssl')){die("no");}else{die("yes");}

kaže "yes".

pokušao sam:
 function my_openssl_sign($data, &$signature, $priv_key_id, $signature_alg = 'sha256WithRSAEncryption') {
    //die('hello');
    $pinfo = openssl_pkey_get_details($priv_key_id);//die('hello');
    $hash = hash('sha256', $data);
    $t = '3031300d060960864801650304020105000420'; # sha256
    $t .= $hash;
    $pslen = $pinfo['bits']/8 - (strlen($t)/2 + 3);

    $eb = '0001' . str_repeat('FF', $pslen) . '00' . $t;
    $eb = pack('H*', $eb);

    return openssl_private_encrypt($eb, $signature, $priv_key_id, OPENSSL_NO_PADDING); 
}
isto se događa kao i s openssl_sign, kao sto vidite gore die('hello'); ako ga uncomment prije openssl_pkey_get_details onda radi a nakon nista ne dobijem opet error document empty

sve i svašta pokušavam al nikako da proradi.