Vi använder certifikatservern för att skapa certifikat och möjliggöra säker anslutning mellan alla våra servrar och tjänster. Vi behöver inte stora resurser för CA-servern. Jag har valt 1 Gb RAM, en CPU och en hårddisk på 10 Gb, men vi kan köra den med 512 Mb RAM och 3 Gb hårddiskutrymme.
sudo virt-install --virt-type kvm --name ca \
--location \
https://deb.debian.org/debian/dists/bullseye/main/installer-amd64/ \
--memory 1024 \
--vcpus 1 \
--disk pool=vmdisks,size=10,format=qcow2 \
--network bridge=br0 \
--hvm \
--graphics none \
--console pty,target_type=serial \
--extra-args "console=ttyS0"
Konfigurera Debian
Redigera nano /etc/network/interfaces och ställa in en statisk IP-adress:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
allow-hotplug ens2
iface ens2 inet static
address 10.115.100.3/24
gateway 10.115.100.1
sudo nano /etc/resolv.conf
search yourdomain.com
nameserver 1.1.1.1
Ställ in systemspråket på engelska för att göra det lättare att upptäcka problem i loggfilerna:
apt install locales-all
localectl set-locale LANG=en_US.utf8
localectl status
Uppdatera Debian och installera de nödvändiga administrationsverktygen
apt update
apt install wget sudo screen nmap telnet tcpdump rsync net-tools dnsutils htop \
apt-transport-https vim gnupg lsb-release
Skapa nano /etc/sudoers.d/10-nopasswd och lägg till
%emir ALL=(ALL) NOPASSWD: ALL
Konfigurera VIM
Öppna nano /etc/vim/vimrc och ersätt hela innehållet med:
runtime! debian.vim
syntax on
set background=dark
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
filetype plugin indent on
set encoding=utf-8
set nobackup
set nowritebackup
set showcmd
set updatetime=300
set showmatch
set ignorecase
set smartcase
set incsearch
set tabstop=2
set softtabstop=2
set shiftwidth=2
set expandtab
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif
Skapa en konfigurationsfil för Vim för användare nano ~/.vimrc och lägg till:
set mouse=
set nocompatible
set cursorline
set nocursorcolumn
set nowrap
set showmode
set hlsearch
set wildmenu
set wildmode=list:longest
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
Från och med nu kommer vi att använda VIM istället för nano.
Installera och konfigurera en certifikatutfärdare (CA)
Easy-RSA är ett verktyg för hantering av certifikatutfärdare (CA) som du använder för att generera en privat nyckel och ett offentligt rotcertifikat, vilka du sedan använder för att signera förfrågningar från klienter och servrar som förlitar sig på din certifikatutfärdare.
Installera Easy-RSA
Eftersom Easy-RSA bara består av ett antal skript och inte är ett program kommer jag att ladda ner och packa upp arkivet:
sudo apt update
sudo apt install easy-rsa
Nu har du allt du behöver för att kunna använda Easy-RSA. I nästa steg ska du skapa en infrastruktur för publika nycklar (PKI) och sedan börja bygga upp din certifikatutfärdare.
Förberedelse av en katalog för infrastruktur för offentliga nycklar
Användare som inte är root bör kunna hantera och interagera med certifikatutfärdaren utan utökade behörigheter.
sudo mkdir /srv/easy-rsa
sudo chown -R emir:emir /srv/easy-rsa
sudo chmod 700 /srv/easy-rsa
ln -s /usr/share/easy-rsa/* /srv/easy-rsa/
cd /srv/easy-rsa
./easyrsa clean-all
touch pki/.rand
touch pki/index.txt
Skapa en certifikatutfärdare
Innan du kan skapa din certifikatutfärdares privata nyckel och certifikat måste du skapa en fil som heter vars och fylla i den med några standardvärden. Börja med att växla till katalogen easy-rsa/pki, och skapa och redigera sedan filen vars med vim eller den textredigerare du föredrar:
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA 'vars' file." >&2
echo "This is no longer necessary and is disallowed. See the section called" >&2
echo "'How to use this file' near the top comments for more details." >&2
return 1
fi
set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "BA"
set_var EASYRSA_REQ_PROVINCE "Province"
set_var EASYRSA_REQ_CITY "Citu"
set_var EASYRSA_REQ_ORG "Organisation"
set_var EASYRSA_REQ_EMAIL "administrator@yourdomain.com"
set_var EASYRSA_REQ_OU "Organisations unit"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 10950
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_CRL_DAYS 180
set_var EASYRSA_CERT_RENEW 30
set_var EASYRSA_RAND_SN "yes"
set_var EASYRSA_NS_COMMENT "Your Organisation Certificate"
set_var EASYRSA_DIGEST "sha512"
För att skapa ett par med en offentlig och en privat rotnyckel för din certifikatutfärdare kör du kommandot ./easy-rsa igen, denna gång med alternativet build-ca:
./easyrsa build-ca
sudo cp pki/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Använda Easy-RSA för att generera nyckelpar och förfrågningar
Easy-RSA kan generera ett nyckelpar och en certifikatbegäran i PKCS#10-format. Denna begäran är vad en certifikatutfärdare behöver för att kunna generera och skicka tillbaka ett signerat certifikat.
Helst bör du aldrig generera nyckelpar för en klient eller server i den PKI som du använder för din certifikatutfärdare. Det är bäst att separera denna process och endast generera nyckelpar på de system där du planerar att använda dem.
Skapa ett servercertifikat
./easyrsa gen-req dc01 nopass
./easyrsa sign-req server dc01
./easyrsa gen-req dc02 nopass
./easyrsa sign-req server dc02
./easyrsa gen-req mail nopass
./easyrsa sign-req server mail
./easyrsa gen-req srv01 nopass
./easyrsa sign-req server srv01
./easyrsa gen-req srv02 nopass
./easyrsa sign-req server srv02
Kontrollera certifikatet
openssl x509 -in pki/issued/dc01.crt -text
openssl verify -CAfile pki/ca.crt pki/issued/dc01.crt
openssl x509 -in pki/issued/dc02.crt -text
openssl verify -CAfile pki/ca.crt pki/issued/dc02.crt
openssl x509 -in pki/issued/mail.crt -text
openssl verify -CAfile pki/ca.crt pki/issued/mail.crt
openssl x509 -in pki/issued/srv01.crt -text
openssl verify -CAfile pki/ca.crt pki/issued/srv01.crt
openssl x509 -in pki/issued/srv02.crt -text
openssl verify -CAfile pki/ca.crt pki/issued/srv02.crt
Överlåtelseintyg
scp pki/ca.crt pki/issued/dc01.crt pki/private/dc01.key dc01:
scp pki/ca.crt pki/issued/dc02.crt pki/private/dc02.key dc02:
scp pki/ca.crt pki/issued/mail.crt pki/private/mail.key mail:
scp pki/ca.crt pki/issued/srv01.crt pki/private/srv01.key srv01:
scp pki/ca.crt pki/issued/srv02.crt pki/private/srv02.key srv02: