Quando risulta necessario cambiare il nome host di un virtualizzatore pve (si può fare dall’interfaccia web), il suo certificato ssl non viene automaticamente rigenerato.
Ho scritto una configurazione ad hoc di openssl che permette con due semplici comandi openssl la rigenerazione con il nome host voluto. Eccola:
======================
[ ca ] default_ca = CA_default # The default ca section [ CA_default ] pve_dir = /etc/pve dir = ./pveCA # top dir database = $dir/index.txt # index file. new_certs_dir = . # new certs dir certificate = $pve_dir/pve-root-ca.pem # The CA cert serial = $pve_dir/pve-root-ca.srl # serial no file private_key = $pve_dir/pve-root-ca.key # CA private key RANDFILE = $dir/.rand # random number file default_days = 3650 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = sha1 # md to use policy = policy_pve # pve policy email_in_dn = no # Don't add the email into cert DN name_opt = ca_default # Subject name display option cert_opt = ca_default # Certificate display option copy_extensions = none # Don't copy extensions from request [ policy_pve ] #countryName = optional #stateOrProvinceName = optional organizationName = supplied organizationalUnitName = supplied commonName = supplied #emailAddress = optional [ req ] default_bits = 1024 #default_keyfile = pve-ssl.key encrypt_key = no #nessuna password per la chiave distinguished_name = req_distinguished_name # attributes = req_attributes x509_extensions = v3_ca dirstring_type = nobmp [ req_distinguished_name ] #countryName = Country Name (2 letter code) #countryName_default = IT #countryName_min = 2 #countryName_max = 2 #localityName = Locality Name (eg, city) organizationName = Organizzazione (lasciare il default per pve) organizationName_default = Proxmox Virtual Environment organizationalUnitName = Unità organizzativa (lasciare il default per pve) organizationalUnitName_default = PVE Cluster Node commonName = FQDN del server commonName_default = commonName_max = 64 #emailAddress = Email Address #emailAddress_max = 40 #[ req_attributes ] #challengePassword = A challenge password #challengePassword_min = 4 #challengePassword_max = 20 [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true =================================
Basta salvarla in un file pve-ssl.cfg e poi eseguire questo semplice script:
=============
#!/bin/sh
CFG=pve-ssl.cfg
INDEX_DIR=pveCA
REQUEST=pve-ssl.req
# check if directory exists
if [ -d $INDEX_DIR ]; then
echo “Directory $INDEX_DIR esistente ”
else
echo “Creo directory $INDEX_DIR”
mkdir $INDEX_DIR
fi
if [ -f $INDEX_DIR/index.txt ]; then
echo “File index.txt esistente ”
else
echo “Creo index.txt”
touch $INDEX_DIR/index.txt
fi
openssl req -config $CFG -new -keyout pve-ssl.key -out $REQUEST
openssl ca -config $CFG -in $REQUEST -out pve-ssl.pem
==============
Durante lo script verrà chiesto di specificare il nome host completo del virtualizzatore.
Se tutto è andato bene si copiano chiave e certificato generati (pve-ssl.key e pve-ssl.pem) in /etc/pve sovrascrivendo i due file vecchi, e si riavvia apache.