Re: Create client certificate with openssl
| From: | Ryan Sun | Date: | Wed, 25 Nov 2009 15:36:29 +0000 |
| Subject: | Re: Create client certificate with openssl | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-300095@lists.php.net to get a copy of this message | ||
check these options
*-pass arg, -passin arg*
the PKCS#12 file (i.e. input file) password source. For more information
about the format of *arg* see the *PASS PHRASE ARGUMENTS* section in *
openssl*(1) <http://www.openssl.org/docs/apps/openssl.html#>.
*-passout arg*
pass phrase source to encrypt any outputed private keys with. For more
information about the format of *arg* see the *PASS PHRASE ARGUMENTS*section in
*openssl*(1) <http://www.openssl.org/docs/apps/openssl.html#>.
I believe you can ask user their password on previous page and utilize the
'pass' option and it won't ask for a password again
HTH
On Wed, Nov 25, 2009 at 2:53 AM, Tanveer Chowdhury <
tanveer.chowdhury@gmail.com> wrote:
> Hi all,
>
> I have an apache server and for that I created CA as the signing authority
> using openssl.
>
> Now I created a php page which will generate client certificates with key
> and will sign by CA. Now the output is in .pem .
> Now how to convert it in .p12 for exporting it in client browser..
>
> Again, If using exec gives another problem which is it asks for export
> password so how to give this via php.
>
> Thanks in advance.
> Below is the code:
>
> <?
> Header("Content-Type: text/plain");
> $CA_CERT = "/usr/local/openssl/misc/demoCA/cacert.pem";
> $CA_KEY = "/usr/local/openssl/misc/demoCA/private/cakey.pem";
> $req_key = openssl_pkey_new();
> if(openssl_pkey_export ($req_key, $out_key)) {
> $dn = array(
> "countryName" => "AU",
> "stateOrProvinceName" => "AR",
> "organizationName" => "Widget Ltd",
> "organizationalUnitName" => "Test",
> "commonName" => "John Smith"
> );
> $req_csr = openssl_csr_new ($dn, $req_key);
> $req_cert = openssl_csr_sign($req_csr, "file://$CA_CERT",
> "file://$CA_KEY", 365);
> if(openssl_x509_export ($req_cert, $out_cert)) {
> echo "$out_key\n";
> echo "$out_cert\n";
> $myFile2 = "/tmp/testFile.pem";
> // $myFile1 = "/tmp/testKey.pem";
>
> $fh2 = fopen($myFile2, 'w') or die("can't open file");
> fwrite($fh2, $out_key);
> $fh1 = fopen($myFile2, 'a') or die("can't open file");
> fwrite($fh1, $out_cert);
> fclose($fh1);
> fclose($fh2);
>
> $command = `openssl pkcs12 -export test -in /tmp/testFile.pem -out
> client-cert.p12`;
> exec( $command );
>
> }
> else echo "Failed Cert\n";
> }
> else
> echo "FailedKey\n";
> ?>
>