Menu Chiudi

Pillola #10: rigenerare il certificato di un virtualizzatore Proxmox PVE

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.

WordPress Appliance - Powered by TurnKey Linux