openssl_csr_sign
openssl_csr_sign
Sign a CSR with another certificate (or itself) and generate a certificate
**openssl_csr_sign** $csr $ca_certificate $private_key int $days $options int $serial $serial_hex
generates an x509 certificate from the given .
openssl_csr_sign
csr
A previously generated by .
It can also be the path to a encoded when specified as
or an exported string generated
by .
openssl_csr_new``openssl_csr_export
ca_certificate
The generated certificate will be signed by .
If is null, the generated certificate
will be a self-signed certificate.
ca_certificate``ca_certificate
private_key
is the private key that corresponds to
.
private_key``ca_certificate
days
specifies the length of time for which the
generated certificate will be valid, in days.
days
options
You can finetune the signing by .
See for more information about
.
options``openssl_csr_new``options
serialAn optional the serial number of issued certificate. If not specified
it will default to 0.
serial_hex
An optional hexadecimal string representing the serial number of the
issued certificate. If set, it takes precedence over the
parameter value. If not specified or set
to null, the parameter value is used
instead.
serial``serial
Returns an on success, false on failure.
OpenSSLCertificate
Voorbeeld: example - signing a (how to implement your own CA)
<?php
// Let's assume that this script is set to receive a CSR that has
// been pasted into a textarea from another page
$csrdata = $_POST["CSR"];
// We will sign the request using our own "certificate authority"
// certificate. You can use any certificate to sign another, but
// the process is worthless unless the signing certificate is trusted
// by the software/users that will deal with the newly signed certificate
// We need our CA cert and its private key
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "your_ca_key_passphrase");
$usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365, array('digest_alg'=>'sha256') );
// Now display the generated certificate so that the user can
// copy and paste it into their local configuration (such as a file
// to hold the certificate for their SSL server)
openssl_x509_export($usercert, $certout);
echo $certout;
// Show any errors that occurred here
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>