1. Go to this page and download the library: Download caiquemcz/ssl-converter library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
caiquemcz / ssl-converter example snippets
use CaiqueMcz\SslConverter\SslConverter;
// Convert to PEM
$response = (new SslConverter($certificate))
->withCaBundle($caBundle)
->withPrivateKey($privateKey, $password) // password is optional
->toPem();
// Convert to PFX
$response = (new SslConverter($certificate))
->withCaBundle($caBundle) // optional
->withPrivateKey($privateKey, $password) // password is optional
->toPfx('pfx-password', $useLegacy); // useLegacy is optional (default: false)
// Convert to JKS
$response = (new SslConverter($certificate))
->withCaBundle($caBundle) // optional
->withPrivateKey($privateKey, $password) // password is optional
->toJks('jks-password', 'alias', $useLegacy); // alias and useLegacy are optional
// Save the converted file
file_put_contents(
$response->virtualFile()->getName(),
$response->virtualFile()->getContent()
);
use CaiqueMcz\SslConverter\SslConverter;
$certificate = file_get_contents('certificate.pem');
$privateKey = file_get_contents('private.key');
$caBundle = file_get_contents('ca-bundle.pem');
$response = (new SslConverter($certificate))
->withCaBundle($caBundle)
->withPrivateKey($privateKey)
->toPfx('SecurePassword123!');
file_put_contents('certificate.pfx', $response->virtualFile()->getContent());
use CaiqueMcz\SslConverter\SslConverter;
$certificate = file_get_contents('certificate.crt');
$privateKey = file_get_contents('private.key');
$response = (new SslConverter($certificate))
->withPrivateKey($privateKey)
->toJks('keystore-password', 'myapp');
file_put_contents('keystore.jks', $response->virtualFile()->getContent());
use CaiqueMcz\SslConverter\SslConverter;
$certificate = file_get_contents('certificate.pem');
$encryptedKey = file_get_contents('encrypted-private.key');
$response = (new SslConverter($certificate))
->withPrivateKey($encryptedKey, 'key-encryption-password')
->toPfx('pfx-password');
file_put_contents('certificate.pfx', $response->virtualFile()->getContent());
use CaiqueMcz\SslConverter\SslConverter;
$certificate = file_get_contents('certificate.pem');
$privateKey = file_get_contents('private.key');
$response = (new SslConverter($certificate))
->withPrivateKey($privateKey)
->toPfx('password', true); // true = use legacy algorithm
file_put_contents('certificate.pfx', $response->virtualFile()->getContent());
use CaiqueMcz\SslConverter\Converter;
use CaiqueMcz\SslConverter\Formats\PemFormat;
use CaiqueMcz\SslConverter\ValueObjects\CertificateData;
use CaiqueMcz\SslConverter\ValueObjects\PrivateKeyData;
$certificateData = new CertificateData(
$certificate,
new PrivateKeyData($privateKey, $privateKeyPassword),
$caBundle
);
$pemFormat = new PemFormat($certificateData);
$converter = new Converter();
$response = $converter->convert($pemFormat);
// Get the main file (fullchain.pem)
$mainFile = $response->virtualFile();
echo $mainFile->getName(); // fullchain.pem
echo $mainFile->getContent(); // Certificate content
// Get extra files (ca-bundle.pem, private.pem)
foreach ($response->extraVirtualFile() as $file) {
echo $file->getName();
echo $file->getContent();
}
use CaiqueMcz\SslConverter\Formats\PfxFormat;
$certificateData = new CertificateData(
$certificate,
new PrivateKeyData($privateKey),
$caBundle
);
$pfxFormat = new PfxFormat($certificateData);
$pfxFormat->setPfxPassword('your-password');
// Optional: Use legacy algorithm for older systems
$pfxFormat->withLegacyAlgorithm();
$converter = new Converter();
$response = $converter->convert($pfxFormat);
$pfxFile = $response->virtualFile();
file_put_contents('certificate.pfx', $pfxFile->getContent());
use CaiqueMcz\SslConverter\Formats\JksFormat;
$certificateData = new CertificateData(
$certificate,
new PrivateKeyData($privateKey),
$caBundle
);
$jksFormat = new JksFormat($certificateData);
$jksFormat->setJksPassword('your-password');
// Optional: Use legacy algorithm
$jksFormat->withLegacyAlgorithm();
$converter = new Converter();
$response = $converter->convert($jksFormat);
$jksFile = $response->virtualFile();
file_put_contents('certificate.jks', $jksFile->getContent());
use CaiqueMcz\SslConverter\ValueObjects\PrivateKeyData;
// Private key with password
$privateKeyData = new PrivateKeyData($privateKey, 'key-password');
$certificateData = new CertificateData(
$certificate,
$privateKeyData,
$caBundle
);
// Use as normal
$pfxFormat = new PfxFormat($certificateData);
$pfxFormat->setPfxPassword('pfx-password');
$response = $converter->convert($format);
// Get all files including main and extras
$allFiles = $response->getAllVirtualFiles();
foreach ($allFiles->get() as $file) {
echo sprintf(
"File: %s (Size: %d bytes)\n",
$file->getName(),
$file->getSize()
);
file_put_contents($file->getName(), $file->getContent());
}