Generování a správa klientských certifikátů
Generování certifikátů¶
Ke generování certifikátů slouží služba pmc-scep, která implementuje SCEP. Tuto službu volá PMC BE na základě požadavku z instalačního souboru. Viz schéma níže.

Instalace SCEP serveru a vytvoření certifikační autority¶
Info
Pokud instalace PMC proběhla podle popisu základní instalace, není tyto kroky třeba dělat. SCEP server je již součástí docker-compose souboru.
Vytvoření CA¶
mkdir /var/lib/pmc/scep
cd /var/lib/pmc/scep
mkdir certs private
echo 01 > serial
touch index.txt
cp /etc/ssl/openssl.cnf .
vim ./openssl.cnf
Editujte soubor ./openssl.cnf, aby vypadal následovně.
[ ca ]
default_ca = CA_default # The default ca section
[ CA_default ]
dir = /var/lib/pmc/scep # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
database = $dir/index.txt # database index file.
# several certs with same subject.
new_certs_dir = $dir/certs # default place for new certs.
certificate = $dir/certs/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
private_key = $dir/private/cakey.pem # The private key
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha256 # use SHA-256 by default
preserve = no # keep passed DN ordering
policy = policy_match
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CZ
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Czechia
localityName = Locality Name (eg, city)
localityName_default = Prague
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Green Center s.r.o
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ v3_intermediate_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
Poté vytvořte privátní klíč kořenové CA a změňte formát certifikátu
# (10)!
openssl genrsa -des3 -out private/cakey.pem 4096
# (9)!
openssl req -new -x509 -days 3650 -config openssl.cnf -extensions v3_ca -key private/cakey.pem -out certs/cacert.pem
# (8)!
openssl x509 -in certs/cacert.pem -out certs/cacert.pem -outform PEM
# (7)!
openssl x509 -noout -text -in certs/cacert.pem
mkdir intermediate
mkdir intermediate/depot
cd intermediate/depot
touch index.txt
echo 01 > serial
echo 01 > crlnumber
#copy the configuration file and make following changes
cp ../../openssl.cnf ../openssl.cnf
vim ../openssl.cnf # (1)!
vim index.txt.attr # (2)!
# (3)!
openssl genrsa -des3 -out ./ca.key 4096
openssl req -new -sha256 -config ../openssl.cnf -key ca.key -out intermediate.csr.pem # (4)!
# (5)!
openssl ca -config ../../openssl.cnf -extensions v3_intermediate_ca -days 2650 -notext -batch -in intermediate.csr.pem -out ca.pem
# (6)!
openssl x509 -noout -text -in ca.pem
-
V souboru udělejte následující úpravy
-
Vytvoření souboru index.txt.attr s obsahem níže
- Vytvoření klíče a CSR
- V parametrech vyplnit následující:
Country Name (2 letter code) [CZ]: State or Province Name (full name) [Czechia]: Locality Name (eg, city) []:Prague Organization Name (eg, company) [Green Center s.r.o]: Organizational Unit Name (eg, section) []:Kbely Common Name (e.g. server FQDN or YOUR name) []:Intermediate CA Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: - Podepsání CSR a vytvoření certifikátu pro immediate CA
- Ověření - příkaz vypíše certifikát v textové podobě
- Ověření - příkaz vypíše certifikát v textové podobě
- Export certifikátu do formátu PEM
- Vytvoření nového certifikátu
- Generování privátního klíče
Zdroj: https://www.golinuxcloud.com/openssl-create-certificate-chain-linux/
Instalace SCEP serveru¶
- Stažení Binárního souboru
-
Příprava souborů v adresáři /var/lib/pmc/scep
cd /var/lib/pmc/scep/intermediate echo "capassword" > capas echo "challenge" > challenge chmod 400 capas challengeDo adresáře
/var/lib/pmc/scep/nakopírujte také souborscepserver-linux-amd64. -
Vytvoření SCEP služby - Nejdříve vytvoříme soubor
/etc/systemd/system/scep.service/etc/systemd/system/scep.service[Unit] Description = SCEP Server After = network.target [Service] Type = simple Restart=on-failure RestartSec=5s User = pmc Group = pmc WorkingDirectory= /var/lib/pmc/scep/intermediate ExecStart = /var/lib/pmc/scep/intermediate/scepserver-linux-amd64 -capassFile /var/lib/pmc/scep/intermediate/capas -port 8099 -challengeFile /var/lib/pmc/scep/intermediate/challenge -crtvalid 1825 ExecStop= /bin/kill "$MAINPID" [Install] WantedBy = multi-user.targetA následně provedeme příkazy níže:
# (1)! sudo systemctl daemon-reload # (2)! sudo systemctl start scep # (3)! sudo systemctl status scep sudo systemctl enable scep- Reload konfigurace
- Spuštění SCEP služby
- Kontrola zda služba naběhla. Pokud ano, nastavíme příkazem níže automatické spouštění
-
Úprava konfigurace reverse proxy Pokud jsme službu nakonfigurovali podle návodu, je třeba do konfigurace reverse proxy přidat tyto řádky - viz konfigurace reverse proxy
Po úpravě souboru je třeba restartovat apache příkazem
sudo systemctl restart apache2.
Instalace SCEP klienta¶
Scep klienta spouští PMC. V případě, že instalace PMC proběhla podle popisu základní instalace, není třeba klientskou část vůbec řešit, protože je součástí docker kontejneru pmc-be. Pro ostatní případy je třeba klienta zpřístupnit na cestě, která je nakonfigurovaná v konfiguračním souboru pmc-be a ujistit se, že uživatel který spouští službu PMC má právo na spuštění tohoto souboru.