Как создать цифровой сертификат и экспортировать в файл .p12 на PHP? - PullRequest
3 голосов
/ 01 декабря 2011

Как создать цифровой сертификат и экспортировать в файл .p12 на PHP?

Я хочу, чтобы в файле .p12 был включен закрытый ключ. А также хотите проверить, выдана ли уже пара ключей (залогинена в базе данных).

Я нашел функцию с именем 'openssl_pkcs12_export_to_file', но не знаю, с чего начать. Похоже, мне сначала нужен сертификат X509 и закрытый ключ.

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Создание самозаверяющего сертификата:

<?php
$dn = array(
    "countryName" => "UK",
    "stateOrProvinceName" => "Somerset",
    "localityName" => "Glastonbury",
    "organizationName" => "The Brain Room Limited",
    "organizationalUnitName" => "PHP Documentation Team",
    "commonName" => "Wez Furlong",
    "emailAddress" => "wez@example.com"
);

$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey);
$sscert = openssl_csr_sign($csr, null, $privkey, 365);

openssl_csr_export($csr, $csrout) and var_dump($csrout);
openssl_x509_export($sscert, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);

// Show any errors that occurred here
while (($e = openssl_error_string()) !== false) {
   echo $e . "\n";
}
?>
3 голосов
/ 01 декабря 2011
<code><?php
error_reporting(-1);

function dump($Var) {
  echo "<hr/><pre>";
  var_dump($Var);
  echo "
";} функция check_errors () {echo"
";
  $Count = 0;
  while (($e=openssl_error_string())!==false) {
    echo $e."<br>";
    $Count++;
  }
  if ($Count==0)
    echo "No error";
  echo "
";} $ Configs = array (" config "=>" e: /progetti/php/openssl/openssl.cfg "," digest_alg "=>" sha1 "," x509_extensions "=>" v3_ca "," req_extensions "=> "v3_req", "private_key_bits" => 1024, "private_key_type" => OPENSSL_KEYTYPE_RSA, "encrypt_key" => true, "encrypt_key_cipher" => OPENSSL_CIPHER_3DES); $ Info = массив ("countryName" => "имя_приложения",> VR "," VR ",>"=>" Ханой "," localityName "=>" Long Bien "," organizationName "=>" Тестовая компания "," organizUnitName "=>" Отдел тестирования "," commonName "=>" Tester "," emailAddress "=> "test@gmail.com"); $ Private_Key = null; $ Unsigned_Cert = openssl_csr_new ($ Info, $ Private_Key, $ Configs); check_errors (); dump ($ Private_Key); dump ($ Unsigned_Cert); $ Signed_Cert = openssl_csr_sign($ Unsigned_Cert, null, $ Private_Key, 365, $ Configs); check_errors (); dump ($ Signed_Cert); openssl_pkcs12_export_to_file ($ Signed_Cert, "test.p12", $ Private_Key, "123456"); check_errors (); 100;*
...