---
title: 'CA-server med Easy-RSA'
url: 'https://tucek.me/sv/tech/servers/ca'
markdown: 'https://tucek.me/sv/tech/servers/ca.md'
lang: sv
date: '2026-08-30'
description: '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…'
---

# CA-server med Easy-RSA

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.

```command
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:

```setting
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`

```setting
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:

```command
apt install locales-all
localectl set-locale LANG=en_US.utf8
localectl status
```

### Uppdatera Debian och installera de nödvändiga administrationsverktygen

```commands
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

```setting
%emir ALL=(ALL) NOPASSWD: ALL
```

### Konfigurera VIM

Öppna `nano /etc/vim/vimrc` och ersätt hela innehållet med:

```setting
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:

```setting
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:

```command
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.

```command
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:

```setting
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:

```command
./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

```command
./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

```command
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

```command
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:
```

---

## Navigation

- Parent: [Fabrik](https://tucek.me/sv/tech/servers.md)
- Next: [dc01](https://tucek.me/sv/tech/servers/dc01.md)
- Children:
  - [PKI för avancerade användare](https://tucek.me/sv/tech/servers/ca/pki.md)
