openssl_csr_new
(PHP 4 >= 4.2.0, PHP 5)
openssl_csr_new — Genera una CSR
Descripción
$dn
, resource &$privkey
[, array $configargs
[, array $extraattribs
]] )
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.
Parámetros
-
dn -
El Nombre Distinguido que se va a usar en el certificado.
-
privkey -
privkeypodrí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 enconfigargs, se comportan como sus equivalentes en el archivo openssl.conf, como está listado en la tabla de abajo.Sobrescritura de Configuración clave configargstipo 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_DHoOPENSSL_KEYTYPE_RSA. El valor por defecto esOPENSSL_KEYTYPE_RSAel 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 -
extraattribsse usa para especificar opciones de configuración adicionales para la CSR. Ambos,dnyextraattribs, son matrices asociativas cuyas claves son convertidas a identificadores de objetos y aplicadas a las partes relevantes de la petición.
Valores devueltos
Devuelve la CSR.
Ejemplos
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";
}
?>