Para estiblecer una Autoridad de Certificación (CA) raíz en CentOS 7, primero se requiere el paquete OpenSSL. Ejecute el siguiente comando para instalarlo y sus dependencias de desarrollo:
sudo yum install openssl openssl-devel -y
A continuación, cree una estructura de directorios para organizar los archivos de certificados. Por ejemplo:
sudo mkdir -p /etc/pki/ca/{certs,crl,newcerts,private}
sudo cd /etc/pki/ca
Configure OpenSSL mediante un archivo de configuración personalizado. Defina parámetros commo la política de certificación y extensiones X.509:
cat > configuracion_openssl.cnf <<fin authoritykeyidentifier="keyid:always,issuer" basicconstraints="critical," ca="" ca:true="" ca_por_defecto="" certificaci="" certificate="\$dir/ca_certificado.pem" certs="\$dir/certs" ciudad="" com="" commonname="supplied" commonname_default="Autoridad" countryname="match" countryname_default="ES" crl_dir="\$dir/crl" database="\$dir/index.txt" de="" default_bits="2048" default_ca="CA_por_defecto" default_crl_days="30" default_days="3650" default_keyfile="private/ca_clave.pem" default_md="sha256" del="" digitalsignature="" dir="/etc/pki/ca" distinguished_name="req_nombre_distinto" ejemplo="" ejemploca="" emailaddress="optional" fin="" hostname="" keycertsign="" keyusage="critical," la="" letras="" localityname="Localidad" localityname_default="Madrid" new_certs_dir="\$dir/newcerts" nombre="" organizaci="" organizationalunitname="optional" organizationname="match" organizativa="" pa="" policy="politica_match" politica_match="" preserve="no" private_key="\$dir/private/ca_clave.pem" provincia="" randfile="\$dir/.rand" req="" req_nombre_distinto="" serial="\$dir/serial" servidor="" stateorprovince_default="Madrid" stateorprovincename="match" string_mask="utf8only" subjectkeyidentifier="hash" v3_ca="" x509_extensions="v3_ca"></fin>
Preparando el entorno de trabajo de la CA, cree archivos auxiliares para el seguimiento:
touch index.txt
echo 1000 > serial
Genere un par de claves para la CA y un certificado autofirmado utilizando los siguientes comandos:
openssl genrsa -out private/ca_clave.pem 2048
openssl req -x509 -new -nodes -key private/ca_clave.pem -subj "/CN=Autoridad de Certificación Ejemplo" -days 3650 -out ca_certificado.pem -config configuracion_openssl.cnf -extensions v3_ca
Para verificar el certificado generado, inspeccione sus detalles:
openssl x509 -in ca_certificado.pem -text -noout
La salida debe confirmar que la versión es v3, que las restricciones básicas incluyen CA:TRUE, que el uso de claves incluye KeyCertSign, y que la validez es de 10 años.
Proteja los archivos sensibles estableciendo permisos adecuados:
sudo chmod 600 private/ca_clave.pem
sudo chmod 644 ca_certificado.pem
Para distribuir el certificado CA en todos los nodos de infraestructura, copie los archivos a rutas consistentes, por ejemplo usando scp:
scp ca_certificado.pem usuario@nodo_remoto:/etc/pki/ca/
Al emitir certificados para otros componentes, primero cree una solicitud de firma de certificado (CSR) y luego fírmela con la CA. Ajuste las variables según el componente:
NOMBRE_COMPONENTE="servidor_web"
openssl req -new -key private/\${NOMBRE_COMPONENTE}_clave.pem -out \${NOMBRE_COMPONENTE}.csr -config configuracion_openssl.cnf
openssl ca -in \${NOMBRE_COMPONENTE}.csr -out certs/\${NOMBRE_COMPONENTE}_certificado.pem -extensions v3_ext -config configuracion_openssl.cnf