Método em PHP para Conversão de Arquivo P12 para PEM

EXIBINDO RESPOSTAS:

Avatar discord do usuario elinardosilva

elinardosilva

Método em php(utilizando laravel) para quem deseja fazer upload e conversão do arquivo p12 para pem

public function convertP12ToPemCertificate(Business $business, $file)
{
if (!isset($file) || !$file->isValid()) {
throw new InvalidPixCertificateException();
}

// get p12 file content
$p12FileContent = file_get_contents($file);
$certificate = [];

// transform p12 file content into array
// passing passphrase empty to be able to open the file without password
openssl_pkcs12_read($p12FileContent, $certificate, '');

// extract privat key
$pkey = null;
if (!isset($certificate['pkey'])) {
throw new InvalidPixCertificateException('Index "pkey" not found');
}
// openssl_pkey_export_to_file($certificate['pkey'], $pkey, '');

// extract privat cert
$cert = null;
if (!isset($certificate['cert'])) {
throw new InvalidPixCertificateException('Index "cert" not found');
}
// openssl_x509_export($certificate['cert'], $cert);
$file_read = "subject=/CN=271207/C=BR\n";
$file_read .= "issuer=/C=BR/ST=Minas Gerais/O=Gerencianet Pagamentos do Brasil Ltda/OU=Infraestrutura/CN=api-pix.gerencianet.com.br/[email protected]\n";
$file_read .= $certificate['cert'];
$file_read .= "Key Attributes: \n";
$file_read .= $certificate['pkey'];

// $pemFileContents = $cert . $pkey;

$gerencianet = $business->gerencianet;
$path = str_replace('{businessId}', $business->id, Business::CERTIFICATE_LOCAL_PATH) . Str::random(40) . '.pem';
Storage::delete($gerencianet->certificate_path);

Storage::put($path, $file_read);
$gerencianet->certificate_path = $path;

$gerencianet->certificate_path;
$gerencianet->save();
}
depois de muita pisa ta tudo funcionando como eu queria

Avatar discord do usuario guilherme_efi

guilherme_efi

Show de bola, <@!575022326626648074>! 👏
Obrigado por compartilhar com a comunidade, pode ajudar outras pessoas! 😃

Avatar discord do usuario elinardosilva

elinardosilva

ai tem a regra de meu negocio como é o caso de $business pois meu app é um SAAS onde terá varias empresas fazendo upload. então so adptar para negocio de vcs, q pode ser um user, ou nem passar ngm. $file ai é pq esse metodo é chamado de um service, e meu controller ta mandando o input q é um arquivo