A/I Orange Book (1.0): Un how-to sulla replicazione e distribuzione di una rete resistente di server autogestiti | ||
---|---|---|
Indietro | Capitolo 7. Certification Authority | Avanti |
Ora creiamo le richieste di certificato che ci interessano (ad es. per il servizio web):
$ openssl req -new -keyout $CADIR/certs/web_key.pem \ -out $CADIR/certs/web_req.pem -days 1097 -nodesdurante la creazione ci verranno chiesti l'OU ed il CN, da riempiere rispettivamente con la tipologia del servizio ed il dn a cui fa riferimento il servizio.
I subjectAltName, quelle simpatiche estensioni di X.509v3, verranno specificate nei file extension (presenti in /opt/ca/ext) e verranno aggiunti quando la richiesta verrà firmata utilizzando il certificato di root della CA.
L'opzione -nodes ci permette di non cifrare la chiave, così da non dover inserire nessuna password durante la gestione e l'utilizzo della stessa. Nel caso venga fatta una richiesta senza l'opzione -nodes, per eliminare la password dalla chiave basterà eseguire il comando
$ openssl rsa -in $CADIR/certs/web_key.pem \ -out $CADIR/certs/web_key.pem
Vediamo la richiesta di certificato:
$ openssl req -text -noout -in $CADIR/certs/web_req.pemFirmiamo il certificato appena creato:
$ openssl ca -days 1097 -policy policy_anything \ -out $CADIR/certs/web_cert.pem \ -extfile $CADIR/ext/webserver.ext \ -infiles $CADIR/certs/web_req.pem
Ora sarà possibile eliminare web_req.pem e portare (nel caso del certificato per il server web) il certificato web_cert.pem e la rispettiva chiave web_key.pem su ogni server.
Vediamo come è stato modificato il nostro certificato:
$ openssl x509 -text -noout -in $CADIR/certs/web_cert.pemPossiamo notare l'aggiunta di alcune estensioni (definite nel file /opt/ca/ext/webserver.ext), prima non presenti. Questo è il contenuto del file:
basicConstraints = CA:false nsCertType = server keyUsage = nonRepudiation, digitalSignature, \ keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth nsComment = "web services" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid, issuer:always subjectAltName = @subject_alt_name issuerAltName = issuer:copy nsCaRevocationUrl = http://dominio.org/crl/cacrl.crl nsRevocationUrl = http://dominio.org/crl/cacrl.crl crlDistributionPoints = @cdp_section [ subject_alt_name ] DNS.1=dominio.org DNS.2=www.dominio.org DNS.3=altro.dominio.org email=copy [ cdp_section ] URI.1=http://dominio.org/crl/cacrl.crl
Per creare i certificati per tutti gli altri servizi basterà cambiare opportunamente i nomi delle richieste, delle chiavi e dei certificati.