¿Cómo las autoridades de certificación establecen y determinan los nombres de los nombres de los sujetos si no los proporciona el usuario final?

0

Digamos que como usuario final genero una CSR (para un certificado de servidor) para enviar a una CA y no incluyo un nombre alternativo del sujeto. ¿Cómo o qué harían para incluir esa información en el certificado del servidor que envían? ¿O no enviarían nada en absoluto y lo rechazarían diciéndome que incluyera uno?

Suponiendo un escenario en el que no lo rechazan, mi mejor suposición es hacer algo como subjectAltName = commonName o subjectAltName = {domain of e-mail}?

Básicamente estoy intentando actuar como mi propia CA utilizando OpenSSL (1.1.0i). He creado un par de raíces y 2 pares intermedios. Sé que podría proporcionar SAN manualmente cada vez, pero me di cuenta de que si hay una manera de automatizar y tener más cajas de seguridad a prueba de fallos, eso también sería genial.

    
pregunta mac92 17.08.2018 - 21:50
fuente

2 respuestas

1

Una CSR no es más que una propuesta (firmada) de qué tipo de certificado desea tener. Realmente no es realmente necesario crear un certificado, es decir, un certificado podría crearse completamente sin tener primero un CSR.

La propuesta de CSR contiene la clave pública que debe incluirse en el certificado final y contiene elementos como el sujeto, los nombres alternativos del sujeto, etc. que se proponen agregar al certificado también. La CSR está firmada con su clave privada para que la CA pueda verificar que realmente posee la clave privada que coincide con la clave pública del certificado.

La CA toma la información de su CSR que le gusta al crear un certificado y también agrega mucha información por sí misma, es decir, no se toma de la CSR. Tomará la clave pública de la RSE. El asunto que agrega al certificado probablemente se basará en su propuesta de CSR, pero también podría modificarlo, agregar nombres alternativos de sujeto que no haya agregado (es decir, podría agregar www.domain ) y excluir otros que haya intentado escabullirse. También agregará tiempo de inicio y vencimiento, AIA (como la URL para solicitudes de OCSP), información del emisor, propósito del certificado ... y la mayoría de estos no se tomarán del CSR original.

  

Básicamente estoy intentando actuar como mi propia CA utilizando OpenSSL (1.1.0i)

No estoy seguro de si y cómo se podría usar la herramienta openssl para crear jerarquías de certificados sin CSR, pero definitivamente se puede hacer esto con la biblioteca OpenSSL. Por ejemplo, creo regularmente certificados de prueba con certificados de raíz, intermedios y de hoja como este en Perl sin necesidad de ningún CSR:

use strict;
use warnings;
use IO::Socket::SSL::Utils;

my @root = CERT_create(
    subject =>  { CN => 'root' },
    CA => 1,
);
PEM_cert2file($root[0],'root-cert.pem');
PEM_key2file($root[1],'root-key.pem');

my @middle = CERT_create(
    issuer => \@root,
    subject =>  { CN => 'middle' },
    CA => 1,
);
PEM_cert2file($middle[0],'middle-cert.pem');
PEM_key2file($middle[1],'middle-key.pem');

my @leaf = CERT_create(
    subject =>  { CN => 'example.com' },
    subjectAltNames => [
        [ 'DNS', 'example.com' ],
        [ 'DNS', 'www.example.com' ],
        [ 'IP', '10.0.3.4' ],
    ],
    purpose => 'server',
    issuer => \@middle,
);
PEM_cert2file($leaf[0],'server-cert.pem');
PEM_key2file($leaf[1],'server-key.pem');
    
respondido por el Steffen Ullrich 18.08.2018 - 06:17
fuente
0

En los más de 1000 certificados que he hecho, la CA nunca cambia el CSR. Lo emiten como es.

He visto que algunos CA anuncian que darán un nombre alternativo de www, por lo que si pagas por example.com, obtienes www.example.com como un alt.

Hacerlo usted mismo significará que el software cert no cambiará la CSR, a menos que usted cambie el software cert. Si quieres hacer eso, puedes.

    
respondido por el MikeP 18.08.2018 - 03:24
fuente

Lea otras preguntas en las etiquetas