(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_csr_new — Genera una CSR
openssl_csr_new() genera una nueva CSR (Certificate Signing Request - Petición de Firma de Certificado) basada en la información proporcionada por dn
, el cuál representa el Nombre Distinguido que se va a usar en el certificado.
Nota: Necesita tener instalado un openssl.cnf válido para que esta función opere correctamente. Vea las notas sobre la sección de instalación para más información.
dn
El Nombre Distinguido que se va a usar en el certificado.
privkey
privkey
podría estar establecida a una clave privada que fue generada previamente por openssl_pkey_new() (o de otro modo, obtenida desde la otra familia de funciones openssl_pkey). La parte pública correspondiente de la clave será usada para firmar la CSR.
configargs
Por defecto, la información de su sistema openssl.conf
se usa para inicializar la petición; puede especificar una sección del archivo de configuración estableciendo la clave config_sección_sección
de configargs
. También puede especificar un archivo de configuración de openssl alternativo estableciendo el valor de la clave config
a la ruta del archivo que quiere utilizar. Las siguientes claves, si están presentes en configargs
, se comportan como sus equivalentes en el archivo openssl.conf
, como está listado en la tabla de abajo.
clave configargs | tipo | equivalente openssl.conf | descripción |
---|---|---|---|
digest_alg | string | default_md | Selecciona qué método de resumen (digest) se va a usar |
x509_extensions | string | x509_extensions | Selecciona qué extensiones debería usarse cuando se crea un certificado x509 |
req_extensions | string | req_extensions | Selecciona qué extensiones debería usarse cuando se crea una CSR |
private_key_bits | integer | default_bits | Specifica cuántos bits deberían usarse para generar una clave privada |
private_key_type | integer | ninguno | Especifica el tipo de clave privada a crear. Ésta puede ser OPENSSL_KEYTYPE_DSA , OPENSSL_KEYTYPE_DH o OPENSSL_KEYTYPE_RSA . El valor por defecto es OPENSSL_KEYTYPE_RSA el cuál es el úncio tipo de clave soportado actualmente. |
encrypt_key | boolean | encrypt_key | ¿Debería ser encriptada una clave exportada (con frase de contraseña)? |
encrypt_key_cipher | integer | none | Una de las constantes de cipher. |
extraattribs
extraattribs
se usa para especificar opciones de configuración adicionales para la CSR. Ambos, dn
y extraattribs
, son matrices asociativas cuyas claves son convertidas a identificadores de objetos y aplicadas a las partes relevantes de la petición.
Devuelve la CSR.
Ejemplo #1 Crear un certificado autofirmado
<?php
// Rellenar la información del nombre distinguido que se va a usar en el certificado
// Debe cambiar los valores de estas claves para que coincidan con su nombre y
// compañía, o para se más exactos, el nombre y la compañía de la persona/sitio
// para el que va a generar el certificado.
// Para los certificados SSL, el nombre común (commonName) normalmente es el nombre de
// dominio que va a usar el certificado, pero para certificados S/MIME,
// el nombre común será el nombre de la persona que usará el
// certificado.
$dn = array(
"countryName" => "UK",
"stateOrProvinceName" => "Somerset",
"localityName" => "Glastonbury",
"organizationName" => "The Brain Room Limited",
"organizationalUnitName" => "PHP Documentation Team",
"commonName" => "Wez Furlong",
"emailAddress" => "wez@example.com"
);
// Generar una nueva pareja de clave privada (y pública)
$privkey = openssl_pkey_new();
// Generar una petición de firma de certificado
$csr = openssl_csr_new($dn, $privkey);
// Normalmente querrá crear un certificado autofirmado en este
// punto hasta que su AC satisfaga su petición.
// Esto crea un certificado autofirmado que es válido por 365 días
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
// Ahora querrá preservar su clave privada, CSR y certificado
// autofirmado por lo que pueden ser instalados en su servidor web, servidor de correo
// o cliente de correo (dependiendo del uso previsto para el certificado).
// Este ejemplo muestra cómo obtener estas cosas con variables, pero
// también puede almacenarlas directamente en archivos.
// Normalmente, enviará la CSR a su AC, la cuál se la emitirá después
// con el certificado "real".
openssl_csr_export($csr, $csrout) and var_dump($csrout);
openssl_x509_export($sscert, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);
// Mostrar cualquier error que ocurra
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>