Jump to content
php.lv forumi

Sertifikātu ģenerēšana ar php (priekš FirstData ECOMM)


darksign

Recommended Posts

To ko var izdarīt izmantojot komandrindu ir šādi:

 

openssl pkcs12 -export -in tirgotajs.pem -out tirgotajs.p12 -certfile CACert.pem -inkey tirgotajs_key.pem

 

Rezultātā tiek noģenrerēts p12 fails. Šeit tiek izmantots arī parametrs "-certfile". (p.s. CACert.pem ir tas pats ECOMM.pem ko FDL atsūta)

 

Pēc tam tiek ģenerēts keystore fails:

openssl pkcs12 -in tirgotajs.p12 > tirgotajs_keystore.pem

 

Tad nu nepieciešams šīs divas rindiņas pārvērst uz PHP kodu.

 

Forumos atradu ka citi joprojām izmanto konsoli (exec() funkciju), taču tas man neder (arhīva pēc ieliku citātu) [avots: http://www.phpbuilde....php?t=10321977]:

 

2. Create a PEM encoded certificate using above TEST.crt

$exestr = "openssl pkcs12 -export -in TEST.crt -inkey MY_PRIVATE_KEY [b]-certfile MY_CA_CERT[/b] -name blablabla -passin pass:MYPASS -passout pass:MYPASS -out TMPCERT";
$exestr2 = "openssl pkcs12 -in TMPCERT -passin pass:MYPASS -passout pass:MYPASS -out TEST.pem";

 

 

Līdz šim man ir izdevies uzģenerēt to pašu p12 failu ar šādu te veidu:



openssl_pkcs12_export($signed_csr, $cerificate_out, $private_key_resource, "parole"); //p.s. $signed_csr <-- parakstiits "tirgotajs.pem" ko atsuuta FDL,  un $private_key_resource -- tirgotaja privaataa atsleega
// $cerificate_out -> On success, this will hold the PKCS#12.
file_put_contents("./certificate.p12", $cerificate_out); //saglabaajam failaa

 

 

Atšķirība tāda, ka PHP koda piemērā netiek izmantots CA sertifikāts jeb "-certfile CACert.pem".

Līdz ar to, kā tālāk izveidot keystore failu?

 

Jo PHP funkcijas izmantojot, vienīgais ko varu izdomāt ir:



$certs_pem = array();
$pkcs12 = file_get_contents($certificate_p12_path);
openssl_pkcs12_read($pkcs12, $certs_pem, $passphrase);
echo "<br />Certificate keystore arr: <br />";
print_r($certs_pem);

 

Un šajā gadījumā $certs_pem satur šādu te masīvu:

Array (
[cert] =>
-----BEGIN CERTIFICATE-----
.......
-----END CERTIFICATE-----

[pkey] =>
-----BEGIN RSA PRIVATE KEY-----
.............
-----END RSA PRIVATE KEY-----
[extracerts] => Array ( )
)

 

Taču konsolē ģenerētais KeyStore fails satur šādu struktūru:

 

Bag Attributes
localKeyID: 64 7A 55 FE 29 .............................4 D1 C7 E9 CF
subject=/C=lv/O=veikals.lv/CN=tirgotajaID
issuer=/C=LV/ST=Riga/L=Riga/O=BSC/OU=BSC/CN=ECOMM/emailAddress=example@example.com
-----BEGIN CERTIFICATE-----
.............
-----END CERTIFICATE-----
Bag Attributes: <No Attributes>
subject=/C=LV/ST=Riga/L=Riga/O=BSC/OU=BSC/CN=ECOMM/emailAddress=example@example.com
issuer=/C=LV/ST=Riga/L=Riga/O=BSC/OU=BSC/CN=ECOMM/emailAddress=example@example.com
-----BEGIN CERTIFICATE-----
.............
-----END CERTIFICATE-----
Bag Attributes
localKeyID: 64 7A 55 FE 29 CE B........................C7 E9 CF
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,4A53F67F2ACB00AE

......................
-----END RSA PRIVATE KEY-----

 

 

Kā ar PHP var uztaisīt to pašu keystore failu? Un kur ielikt to CAcert.pem?

 

Cerams, ka kāds zinošāks palīdzēs, jo līdz šim neko neesmu atradis kur ievietot to CAcert...

 

p.s. ir pieejams arī pkcs7 formāta (it kā chain) fails, ko FDL sūta pielikumā, bet tā kā konsoles komandās tas netiek izmantots, tad diez vai vajag to izmantot priekš PHP.

Link to comment
Share on other sites

nu man vnk. ir uzdevums, uztaisīt tā, lai lietotājs var pats mainīt visus sertifikātus ar vienkāršu "upload" vai arī "send-to-email" pogām... kā arī ir izdiskutēts jautājums.. taču, pasūtītājs grib, lai tā ir.

 

p.s. nav tā ka tikai vienreiz.. šobrīd tas ir jādara katru gadu. (tur ar tas suns aprakts - vienreiz uztaisīšu, pēc tam, useris, varēs lietot nebēdājot, ka neko nezin no openssl, vai arī, ja developeris nav sasniedzams)

 

galu galā, vienalga par to pamatojumu, bet vai tad ar tīru PHP nevar izdarīt šo darbiņu???

Link to comment
Share on other sites

Hmm, pamācībās arī tika dots līdzi batch fails, kur tika prasīts tikai, lai ievada tur vajadzīgos datus.

 

Jā tāds fakts ir, bet kāds šim faktam sakars ar minētajām php funkcijām. Un to būtību, ka neizdodas ar php funkcijām ģenerēt p12 failu, kurā būtu iešūts arī CAcert ?

 

 

To funkciju sarakstu esmu redzējis un pētījis daudzkārt, bet tā arī neesmu atradis, kura no funkcijām ļautu iešūt p12 failā klāt to CAcert.

 

 

Vai kāds varētu palīdzēt?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...