icon

Fekete BT

Miért lehet szükség Self-Signed tanúsítványra?

Előfordulhat az, hogy a saját otthoni szerverünkön szeretnénk futtatni valamit és nem szeretnénk HTTP kommunikációt használni. Ilyenkor a legtöbb esetben egy egyszerű kattintással átrakhatjuk a forgalmat HTTPS-re és az adott program készít magának egy saját tanúsítványt, amit felhasznál a kommunikációra. Akár még a port továbbítást is elvégzi automatikusan.

Ugyanakkor vannak bizonyos esetek, amikor a tanúsítvány generálás nem történik meg magától, vagy szeretnénk lecserélni azt a sajátunkra. Ebben az esetben, ez a feladat ránk hárul. Ilyenkor mi a saját CA-nként fogunk eljárni. Ugyanakkor azt tudni kell, hogy ez nem egy globálisan elismert tanúsítvány, szóval a böngészők/OS-ek ugyanúgy hibát fognak rá dobni.

Self-Signed tanúsítvány készítése OpenSSL-lel Linux alatt

Ahhoz, hogy minden zökkenőmentesen menjen a következő lépéseket kell elvégezni.

1. Amennyiben nem rendelkeznénk az OpenSSL csomaggal, úgy azt a következő paranccsal telepíthetjük fel:

sudo apt install openssl

1.1 Mappa létrehozása a openssl-nek.

Tetszőleges nevet is adhatunk neki, illetve teljesen opcionális.

mkdir openssl && cd openssl

2. A RootCA létrehozása (.key és .cert)

A napot meg lehet emelni tetszőlegesre. Itt 1 évre szól a RootCA. Lehet 1068 vagy 716 is. Én általában 2 évre csinálom.
A subj-nél megfelelő adatokat adjunk be. CN = common name (aláíró). C = country. L = Locality
Jelen esetben mint CA-ként járunk el. Ez ugye nem egy globálisan elismert tanúsítványt lesz.

openssl req -x509 \
            -sha256 -days 356 \
            -nodes \
            -newkey rsa:2048 \
            -subj "/CN=feketebt.net/C=HU/L=Budapest" \
            -keyout rootCA.key -out rootCA.crt 
   	

Terminálba a következő output fog megjelenni


openssl req -x509 \     
          -sha256 -days 356 \
          -nodes \
          -newkey rsa:2048 \
          -subj "/CN=feketebt.net/C=HU/L=Budapest" \
          -keyout rootCA.key -out rootCA.crt
.+.......+............+..+...............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+......+...+...+......................+...+..+...+.........+...+.+..+.......+.....................+.....+.+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+...+.........+......+..........+.....+....+..+......+....+.....+.+....................+....+........+.+..+...+.+......+..+.+............+..+......+..........+......+......+..+......+.+...+...+...+..+...+.......+............+..+...+..........+......+......+........+............+...+...+.........+.........+......+.+.....+...+......+.+.................+.+..+...+..........+..+....+......+...+......+.....+.........+......+...+............+.+..............+....+...........+...+.+.........+........+.............+......+......+.........+......+........+....+..+....+..+...+..........+..............+.+.....+.......+..+.......+.....+.+...+......+........+...+...............+...+....+......+.........+..+.+..+............+......+..........+..............+...+.......+...........+..........+........+...............+......+.+..+...+....+.........+......+......+.....+.......+.....+......+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...........+......+........+......+.+............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+............+......+.......+..+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----

ls -la
	drwxrwxr-x  2 feketebt feketebt 4096 szept 27 08:13 .
	drwxr-x--- 23 feketebt feketebt 4096 szept 27 08:06 ..
	-rw-rw-r--  1 feketebt feketebt 1208 szept 27 08:13 rootCA.crt
	-rw-------  1 feketebt feketebt 1704 szept 27 08:13 rootCA.key
		

3. Server privát kulcs létrehozása. Adhatunk neki tetszőleges nevet akár. Output-ja a server.key fájl lesz.

openssl genrsa -out server.key 2048

4. A csr.conf fájl létrehozása

Ez csupán az egyszerűség kedvéért történik. Megfelelő adatokkal kell feltölteni. Akár nano vagy vim-mel is létrehozhatjuk külön.

Magyarázat a tanúsítvány lánchoz: CN = CommonName, OU = OrganizationalUnit, O = Organization, L = Locality, S = StateOrProvinceName, C = CountryName

cat > csr.conf <<EOF
	[ req ]
	default_bits = 2048
	prompt = no
	default_md = sha256
	req_extensions = req_ext
	distinguished_name = dn

	[ dn ]
	C = HU
	ST = Budapest
	L = Budapest
	O = feketebt
	OU = feketebt
	CN = feketebt.net

	[ req_ext ]
	subjectAltName = @alt_names

	[ alt_names ]
	DNS.1 = feketebt.net (Megfelelő DNS név. Routeren statikus bejegzsést kell felvenni rá.)
	IP.1 = 192.168.2.16 (Megfelelő IP-cím)

	EOF
	

5. CSR (Certificate Signing Request) készítése a szerver privát kulcsával.

Ha egyedi neveket adtunk neki, akkor megfelelő neveket írjunk be. Output-ja a server.csr lesz

openssl req -new -key server.key -out server.csr -config csr.conf

6. A cert.conf létrehozása

Szintén csak a kényelmünket szolgálja.

cat > cert.conf <<EOF

	authorityKeyIdentifier=keyid,issuer
	basicConstraints=CA:FALSE
	keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
	subjectAltName = @alt_names

	[alt_names]
	DNS.1 = feketebt.net (Megfelelő DNS név. Routeren statikus bejegzsést kell felvenni rá.)
	IP.1 = 192.168.2.16 (Megfelelő IP-cím)

	EOF
	

7. SSL certificate készítése self signed CA-val.

Gyakorlatilag eddig csak az előkészítéseket csináltuk meg előre. A napot itt is átírhatjuk.

openssl x509 -req \
		-in server.csr \
		-CA rootCA.crt -CAkey rootCA.key \
		-CAcreateserial -out server.crt \
		-days 365 \
		-sha256 -extfile cert.conf
	

Terminálba a következő output fog megjelenni

openssl x509 -req \
    -in server.csr \
    -CA rootCA.crt -CAkey rootCA.key \
    -CAcreateserial -out server.crt \
    -days 365 \
    -sha256 -extfile cert.conf
	Certificate request self-signature ok
	subject=C = HU, ST = Budapest, L = Budapest, O = feketebt, OU = feketebt, CN = feketebt.net

	

Így kapjuk meg végül a server.crt-t és server.key-t. Ezt kell importálnunk a megfelelő helyre.

!Figyelem!
Mindenki a saját maga meglátása és megítélése szerint cselekedjen az itt olvasottakkal és látottakkal kapcsolatban. Felelőléssget NEM válalok semmi iránt amit leírok, ez szimplán csak annak a dokumentálása, ami számomra működött. Senkit nem buzdítok arra, hogy illegális forrásból szerezzen be bármit is. A lehetséges adatvesztésért felelősséget nem vállalok. A SAJÁT CSELEKEDETEIDÉRT, SAJÁT MAGAD FELELSZ!