Search code examples
phpopensslphp-openssl

Export OpenSSL public key to file


How can I export only the public key to a file(.pem) with PHP? Of course it is possible to export the whole certificate and a private key but I can't find a solution to export a public key.

The file should look like

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArDjwWcPjZRQpiMRsG1fG
kudSYEHnSR57dKUoK+qIc++YZSCWG/q460LrNtQ/EBx6ZdJJnhBk4EwY0snb7TEr
pH5efU2BuCygO3f78DozMxNvvHFFfZ1uw4hobBMSKLKtVcJKmh7r7dvgXtKWdqJf
sUmr2V3LDXTF3r6G5NEorGC4crcSByAvyPatUKRR5t6kAuU8pnWrHnDo+GoSjHy2
vvaUuds6FxHMieFXKrnN8dk6VPpV2PEwzSAk9Ofbq3oZxkIhVGTHjgFPF9tIx3Vu
yo+S4KCP6sxmEt1/p4B5VsCsRU4STbA5jC8qK9vJ1YhMD6tK5FWreaDiWL3wBjf5
xwIDAQAB
-----END PUBLIC KEY-----

Solution

  • That's the solution. Thanks to https://www.virendrachandak.com/techtalk/encryption-using-php-openssl/

    // Generate the public key for the private key
    $key = openssl_pkey_get_details($privateKey); // $privateKey is created with openssl_pkey_new()
    
    // Save the public key in public.pem file
    file_put_contents('public.pem', $key['key']);