(PHP 4 >= 4.2.0, PHP 5, PHP 7)
openssl_csr_new — Genera una CSR
$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.
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";
}
?>