In che modo le autorità di certificazione impostano e determinano subjectAltNames se non forniti dall'utente finale?

0

Diciamo che come utente finale ho generato un CSR (per un certificato server) da inviare a una CA e non includo un nome alternativo soggetto. Come o cosa farebbero per includere tali informazioni sul certificato del server che inviano? O non manderebbero nulla indietro e rifiutarlo dicendo di includerne uno?

Supponendo uno scenario in cui non lo rifiutano, la mia ipotesi migliore è qualcosa come subjectAltName = commonName o subjectAltName = {dominio di posta elettronica}?

Fondamentalmente sto tentando di agire come la mia CA usando OpenSSL (1.1.0i). Ho creato una coppia di root e 2 coppie intermedie. So che potrei fornire manualmente le SAN ogni volta, ma ho capito se c'è un modo per automatizzare e avere più fail-safe che sarebbe bello anche.

    
posta mac92 17.08.2018 - 21:50
fonte

2 risposte

1

Una CSR non è altro che una proposta (firmata) del tipo di certificato che si desidera avere. In realtà non è davvero necessario creare un certificato, cioè un certificato può essere creato completamente senza prima avere un CSR.

La proposta CSR contiene la chiave pubblica che dovrebbe essere inclusa nel certificato finale e contiene cose come soggetto, nomi alternativi ecc. che propongono di aggiungere anche al certificato. Il CSR è firmato con la tua chiave privata in modo che la CA possa verificare che tu possieda effettivamente la chiave privata corrispondente alla chiave pubblica del certificato.

La CA prende le informazioni dal tuo CSR che gli piace quando crea un certificato e aggiunge anche molte informazioni da sola, cioè non prese dal CSR. Prenderà la chiave pubblica dal CSR. L'argomento che aggiunge al certificato sarà probabilmente basato sulla tua proposta di CSR, ma potrebbe anche modificarlo, aggiungere soggetti alternativi che non hai aggiunto (ad esempio potresti aggiungere www.domain ) ed escludere altri che hai cercato di intrufolare ecc. Aggiungerà anche il tempo di inizio e di scadenza, AIA (come URL per le richieste OCSP), informazioni sull'emittente, scopo del certificato ... - e la maggior parte di questi non saranno presi dalla CSR originale.

Basically I am attempting to act as my own CA using OpenSSL (1.1.0i)

Non sono sicuro se e in che modo si possa usare lo strumento openssl per creare gerarchie di certificati senza CSR, ma si può sicuramente farlo con la libreria OpenSSL. Ad esempio, creo regolarmente certificati di test con certificato root, intermedio e leaf come questo in Perl senza bisogno di alcun 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');
    
risposta data 18.08.2018 - 06:17
fonte
0

Nei certificati 1000+ che ho fatto, la CA non cambia mai la CSR. Lo pubblicano così com'è.

Ho visto alcuni CA pubblicizzare che daranno un nome alt gratuito di www quindi se si paga per example.com, si ottiene www.example.com gratuitamente come un alt.

Fare da soli significherà che il software CERT non cambierà la CSR, a meno che non si cambi il software cert. Se vuoi farlo, puoi farlo.

    
risposta data 18.08.2018 - 03:24
fonte

Leggi altre domande sui tag