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.
Ahhoz, hogy minden zökkenőmentesen menjen a következő lépéseket kell elvégezni.
sudo apt install openssl
Tetszőleges nevet is adhatunk neki, illetve teljesen opcionális.
mkdir openssl && cd openssl
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
openssl genrsa -out server.key 2048
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
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
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
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.
Felhasznált linkek:
https://devopscube.com/create-self-signed-certificates-openssl/ (Self-Signed tanúsítvány készítése OpenSSL-lel Linux alatt)
!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!