Głównie specjalizuję się w budowaniu procesów ETL odpowiedzialnych za integracje różnych źródeł danych za pomocą Apache NiFi.
  • Budowa prostego i automatycznego przepływu danych

Urząd certyfikacji dla środowiska Apache NiFi

Środowisko NiFi, powinno korzystać z bezpiecznej komunikacji SSL, dlatego w pierwszej kolejności należy stworzyć odpowiednie certyfikaty. Root CA, czyli główny urząd certyfikacji jest to najwyższy poziom łańcucha certyfikatów. Zazwyczaj główny urząd certyfikacji nie podpisuje bezpośrednio certyfikatów serwera lub klienta. W tym celu wykorzystuje się pośredni urząd certyfikacji Intermediate CA, któremu ufa główny urząd certyfikacji w zakresie podpisywania certyfikatów w jego imieniu. Jest to najlepsza stosowana praktyka, ponieważ jeśli klucz pośredni zostanie złamany, główny urząd certyfikacji może odwołać certyfikat pośredni i utworzyć nową pośrednią parę kryptograficzną. Poniżej, przedstawiam w jaki sposób można wygenerować oba urzędy oraz certyfikaty końcowe, które mogą zostać użyte w środowisku Apache NiFi.

Instalacja OpenSSL

Pakiet OpenSSL jest wymagany do wygenerowania wszelkich kluczy oraz certyfikatów, możemy go zainstalować za pomocą komendy.

sudo dnf install openssl

Utworzenie Root CA

Podstawowymi krokami w generowaniu urzędu certyfikacji za pomocą OpenSSL jest wygenerowanie pliku klucza prywatnego, a następnie samodzielne podpisanie certyfikatu za pomocą tego klucza.

sudo openssl genrsa -out rootCA.key 4096

Jak już zostało wspomniane, należy wygenerować certyfikat CA i samodzielnie go podpisać.

sudo openssl req -x509 -sha256 -new -nodes -key rootCA.key -days 7300 -out rootCA.crt

Następnie, musimy wypełnić wymagane pola, aby prawidłowo utworzyć certyfikat.

Country Name (2 letter code) [XX]:PL
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:nifi.pl
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:NiFi Root X1
Email Address []:

W ten sposób utworzyliśmy własny certyfikat CA, możemy go zweryfikować za pomocą komendy.

sudo openssl x509 -noout -text -in rootCA.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            3b:94:96:3a:a4:3b:b1:59:36:2e:60:a1:43:a9:4e:cd:15:d0:08:81
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = PL, O = nifi.pl, CN = NiFi Root X1
        Validity
            Not Before: Jul 14 10:41:55 2022 GMT
            Not After : Jul  9 10:41:55 2042 GMT
        Subject: C = PL, O = nifi.pl, CN = NiFi Root X1
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e4:20:16:42:eb:fd:09:25:3f:c0:bd:a1:4d:30:
                    a5:16:50:02:d9:b3:ec:2d:7c:41:22:2d:f9:01:be:
                    e2:a3:18:87:23:0f:61:51:f4:f6:2f:f3:6e:5a:20:
                    fc:34:29:c3:a9:8a:01:03:4b:f7:8a:a7:75:bc:11:
                    1b:b9:55:4d:42:8d:cb:2c:71:9d:5a:9e:bc:79:97:
                    be:8a:af:de:94:4a:cf:1d:85:87:5c:a0:84:d6:3e:
                    fa:42:3b:f8:fc:62:6e:49:2d:0d:a0:90:ca:f9:f0:
                    4d:28:d4:3f:1a:40:d2:ab:4f:3b:d6:31:6f:7d:03:
                    43:9d:c8:06:36:75:df:be:e9:d1:36:6d:27:eb:97:
                    c6:53:33:6b:c3:3f:23:cd:46:e7:7b:43:d3:22:44:
                    7f:c4:2e:5d:6e:16:ff:bc:ac:f3:4d:a2:28:5e:4c:
                    22:57:56:fa:ee:5c:f5:5c:f1:b9:65:68:84:02:dd:
                    eb:3b:54:55:97:00:6e:46:e4:b4:9d:9f:60:83:8e:
                    99:ec:bb:2d:79:a6:f8:ee:ee:c3:d5:f3:48:df:1d:
                    5b:20:c9:70:31:26:78:83:9d:27:d6:b2:80:e1:b5:
                    8b:99:23:39:48:ed:49:4b:ae:bb:80:af:91:8f:af:
                    b5:f7:a4:1b:0f:e9:64:4b:ae:bf:f5:67:90:b1:f4:
                    6d:d9:08:f2:d3:fb:2d:3c:16:14:04:30:b2:e3:0f:
                    ae:68:fa:d4:2e:ee:4a:ea:d7:2b:38:b4:72:9f:a6:
                    0a:08:07:8b:f9:46:dd:67:d6:73:4a:65:ec:c8:66:
                    79:89:31:85:ce:a5:91:18:f1:6b:10:77:09:07:47:
                    02:eb:87:70:f0:61:b0:d1:5c:17:e6:6b:3c:53:f5:
                    f6:e4:d8:85:61:66:3e:25:e5:6d:8d:9f:7d:bb:78:
                    52:b1:96:12:d4:73:46:00:63:89:a4:40:89:10:72:
                    31:25:f0:52:35:d9:f8:cf:fb:d3:6d:b5:21:d3:61:
                    e7:d0:2e:8b:db:61:86:b9:8b:13:6a:3e:3f:cb:58:
                    6c:c8:08:d1:8c:1d:ac:6d:4f:23:2b:89:1e:bd:46:
                    0f:f9:9f:94:a8:e5:3e:a0:25:1d:34:38:f3:ca:3f:
                    46:2a:4d:31:76:57:d3:d6:78:05:b7:dc:f6:79:7a:
                    d7:64:80:05:aa:ce:b0:5c:0d:a6:3c:8d:64:df:ec:
                    40:89:95:1f:89:cf:36:f0:b2:fe:67:34:66:04:d6:
                    e6:a3:cd:bc:aa:21:76:3a:ed:e3:28:9d:5f:91:27:
                    a9:75:8f:17:51:87:e6:ba:53:66:eb:a8:7b:25:12:
                    9c:2d:c2:c2:95:cd:e9:a0:da:a5:3e:8f:65:3d:7b:
                    fc:fb:e9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                DD:B7:F0:28:CE:9B:9A:FC:A9:8B:FE:7F:D9:65:AB:F2:91:D2:33:D7
            X509v3 Authority Key Identifier:
                keyid:DD:B7:F0:28:CE:9B:9A:FC:A9:8B:FE:7F:D9:65:AB:F2:91:D2:33:D7

            X509v3 Basic Constraints: critical
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         63:4a:9d:7b:e9:00:c1:eb:d1:b3:10:8f:5d:ca:70:9e:22:3e:
         e5:98:fb:62:f4:59:9b:81:0e:f8:61:b2:a6:17:6b:26:d0:c3:
         8d:a7:e5:f3:c7:be:cb:fa:a9:df:6f:ec:9e:86:c1:8d:bb:83:
         fb:48:3f:05:bf:30:64:01:06:15:49:d0:a4:8a:a4:a1:51:02:
         4d:90:f5:a0:dd:f6:ae:ea:3a:d3:f2:b1:14:00:70:66:ec:87:
         db:00:6f:76:f8:02:6d:91:e1:a3:6a:c5:a3:32:9a:e8:46:3c:
         42:31:f0:1f:51:d2:b9:3b:da:05:88:a0:0a:6f:b1:af:bf:e2:
         9b:24:ff:d4:44:9e:58:29:0e:f3:1a:2b:1e:70:3d:d5:3b:90:
         90:8d:52:af:89:43:b9:36:00:32:1e:e0:3e:2e:b1:2e:a9:01:
         e0:fe:51:23:be:53:2d:9a:f2:c1:67:3d:7b:38:1d:5e:3d:25:
         35:10:18:43:e3:0b:ec:5e:64:43:71:3b:8d:9a:c6:ff:09:50:
         68:d7:16:ad:cc:36:db:9c:99:97:be:56:37:fb:47:51:25:95:
         55:96:d2:8d:95:f5:03:4a:8d:56:49:84:06:12:93:e0:c0:a3:
         86:83:c0:f6:2f:e2:60:e3:62:62:90:51:21:9d:00:b1:d5:fd:
         61:c3:78:c7:ae:db:57:e4:2d:ca:a9:c3:8a:5c:36:5b:47:72:
         96:78:df:5e:c8:28:26:1d:68:73:21:ea:a8:27:c6:91:8d:54:
         3d:fa:54:46:24:fb:85:84:32:f7:91:67:6a:ea:5c:09:05:4c:
         00:35:92:da:56:e4:8f:54:95:11:6f:d7:5f:92:df:c3:d0:35:
         9e:b4:c0:7d:0b:90:8f:ca:16:f8:11:5b:3c:81:bc:7d:d8:d3:
         7b:db:30:f9:51:ee:2b:62:d0:11:4d:6f:04:a5:82:3e:2c:04:
         8a:13:08:b5:8d:a3:ac:e8:db:6f:86:38:3a:c3:80:82:e8:6a:
         ad:32:46:33:0c:35:7a:cd:e0:7f:83:dd:21:3b:3b:9f:a0:18:
         b2:23:b2:e2:a4:66:e6:1e:2d:c3:f7:d0:68:91:14:13:e8:0b:
         95:80:08:ea:d4:8b:9a:51:88:85:84:6e:37:72:1c:5c:4f:db:
         fd:0c:55:d2:52:88:81:b5:f2:e3:c4:c7:9c:04:d5:ab:42:b8:
         55:3e:d1:6d:9f:47:7b:39:43:2c:ef:e4:19:96:19:0b:37:f0:
         1c:d5:30:4f:d2:f7:f3:92:cc:b3:d4:f1:58:df:5a:d9:59:d7:
         e9:67:eb:6f:17:52:87:f2:5a:82:eb:be:69:d9:e7:4f:b8:50:
         e3:c3:5a:2a:f8:7f:60:8c

Utworzenie Intermediate CA

Procedura utworzenia Intermediate CA jest bardzo podobna jak w poprzednim przykładzie za wyjątkiem takim, że zostanie on podpisany wcześniej wygenerowanym Root CA, zaczynamy od stworzenia klucza prywatnego.

sudo openssl genrsa -out intermediateCA.key 4096

Następnie, należy stworzyć certyfikat z rozszerzeniem CSR, który następnie zostanie podpisany przez Root CA.

sudo openssl req -new -SHA256 -key intermediateCA.key -nodes -out intermediateCA.csr
Country Name (2 letter code) [XX]:PL
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:nifi.pl
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your servers hostname) []:NiFi Root X2
Email Address []:

Please enter the following extra attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Zanim podpiszemy certyfikat, należy stworzyć plik v3_intermediate.ext, który będzie zawierał atrybuty potrzebne do stworzenia Intermediate CA.

sudo nano v3_intermediate.ext

Wklejamy poniższą zawartość.

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign

Na koniec, należy podpisać certyfikat Intermediate za pomocą wcześniej stworzonego RootCA

sudo openssl x509 -req -SHA256 -extfile v3_intermediate.ext -days 1825 -in intermediateCA.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out intermediateCA.crt

Ponownie, jak w przypadku rootCA, możemy zweryfikować nasz certyfikat.

sudo openssl x509 -noout -text -in intermediateCA.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            7c:7f:65:d8:37:65:8c:a6:f5:99:ed:d9:75:cb:a3:40:dd:d9:d5:e7
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = PL, O = nifi.pl, CN = NiFi Root X1
        Validity
            Not Before: Jul 14 11:08:31 2022 GMT
            Not After : Jul 13 11:08:31 2027 GMT
        Subject: C = PL, O = nifi.pl, CN = NiFi Root X2
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:c0:10:6d:f8:19:62:c9:f8:11:bc:a6:e1:20:63:
                    09:14:e8:2b:88:18:48:45:c3:6f:27:0c:8a:83:2f:
                    7a:f1:b8:48:ad:4c:13:da:3b:ca:49:7a:09:00:f1:
                    08:c2:5d:8e:9c:d8:3d:d3:f1:21:ba:5b:4d:c0:8f:
                    22:f5:7c:bc:39:c7:f2:93:ca:07:1b:70:87:e6:54:
                    6c:55:06:ea:fc:d9:46:8b:59:64:7f:0b:d9:6b:67:
                    3c:ba:1b:67:87:94:76:90:93:9e:a8:22:11:c7:85:
                    91:d3:5f:1b:1a:9f:18:5b:6a:88:48:e1:c7:66:e1:
                    5d:70:06:2e:1c:4f:d0:66:ee:d7:63:57:34:6e:9d:
                    c6:b3:c4:41:3a:62:bc:cc:1c:19:c0:ed:2a:06:ab:
                    54:b1:7a:6d:7e:87:a9:29:92:9d:0b:f4:df:3a:76:
                    cc:f6:dd:27:0d:3c:b9:57:8a:97:e1:f6:f6:29:c4:
                    4f:45:99:55:ff:02:bc:af:f2:f0:be:2c:f6:90:57:
                    17:4b:97:b7:b5:71:31:47:e8:82:e7:f8:08:8a:cb:
                    70:f0:c2:df:71:d5:a8:e5:7b:69:4c:05:ec:f1:3f:
                    9e:3b:3e:07:b4:87:15:92:b9:fc:91:40:eb:6f:4d:
                    91:c2:6a:0d:8e:e8:22:f3:39:94:a1:4f:28:0b:af:
                    e8:14:67:33:63:76:cf:16:f0:1b:1a:b8:ff:56:c4:
                    a8:58:b3:29:70:cf:d5:9d:63:1e:19:7d:49:1b:f1:
                    cb:d8:37:6f:0d:e7:fe:f2:30:d2:4a:32:ea:f1:a0:
                    82:c3:5c:69:8d:d9:75:a0:ed:fe:a2:53:c2:ff:09:
                    d3:08:81:c3:a3:f8:36:e9:50:17:5d:de:ca:47:23:
                    ec:0c:9a:31:61:c8:00:58:4b:65:f0:2b:e3:8b:28:
                    9b:c0:22:9f:4c:88:61:fd:99:73:24:2a:1d:9b:f7:
                    92:7e:bc:1e:59:de:29:3b:a9:9a:85:b0:d8:27:12:
                    d8:82:b2:be:0e:80:84:11:58:50:1f:7f:26:d7:c1:
                    cd:06:44:48:64:d5:28:c6:62:fe:e9:4c:c2:25:cc:
                    71:d6:3b:4f:e7:de:c9:c7:9f:3e:cd:e7:fa:b6:67:
                    e9:aa:6b:2c:ae:86:40:56:74:53:87:f7:72:2b:f2:
                    d2:0d:52:dc:a3:8e:89:f9:6d:77:d1:85:48:00:6d:
                    09:0c:1e:39:b7:8c:e3:e0:c6:ae:40:77:ff:7d:94:
                    99:58:18:9a:2a:b5:ea:36:00:76:f2:39:cc:5a:7a:
                    b3:c9:50:f6:54:67:bc:33:a9:36:13:59:8f:e3:2e:
                    33:09:1a:06:fa:c9:9f:84:37:1f:ad:47:21:e7:e1:
                    b5:7f:f3
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:DD:B7:F0:28:CE:9B:9A:FC:A9:8B:FE:7F:D9:65:AB:F2:91:D2:33:D7

            X509v3 Basic Constraints:
                CA:TRUE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         a7:12:72:6d:c9:34:f1:19:c0:ad:40:73:50:59:21:82:c2:cc:
         25:7d:c4:44:0b:33:de:ca:02:77:ab:ee:71:59:31:29:45:fd:
         ab:30:75:89:d3:df:69:54:89:79:37:12:c3:72:af:8a:9f:b1:
         10:7d:dc:8c:3a:af:f7:f4:ad:c3:98:be:ad:c3:56:bc:65:c4:
         c5:01:29:97:9d:da:4e:af:c2:a0:ed:0c:a3:80:f6:91:b7:18:
         6f:85:19:f4:0e:68:6c:86:9e:aa:fd:28:91:93:6b:b7:0e:94:
         78:db:40:2b:81:c0:f8:e9:e9:ad:54:da:5d:05:57:4b:0a:49:
         2d:46:b7:60:59:fd:68:fc:97:24:9a:94:90:9b:e2:47:1a:e5:
         16:38:e8:1f:1d:47:c1:13:31:b2:34:6c:cd:92:43:e6:4a:03:
         f9:dc:15:10:10:6c:29:eb:6d:0b:c4:23:da:55:b0:7d:02:52:
         b0:fc:24:9e:7d:26:08:94:27:7b:da:bf:43:4a:67:91:7f:42:
         4e:a3:dc:30:ca:0f:b3:fa:db:0c:1c:d2:b1:cf:c7:22:c9:ba:
         f1:9b:84:7b:f4:6b:4c:85:84:37:08:11:25:e2:77:d0:89:ed:
         86:da:08:88:95:2b:3a:df:cf:f9:52:6b:18:9b:6b:64:f1:c2:
         3d:b5:ff:e2:ff:9e:fa:04:24:f5:89:7d:14:0d:6c:65:b3:2b:
         56:a8:39:5f:96:01:33:9c:4c:cc:8d:a7:77:83:a6:64:8f:ec:
         b5:6b:48:b0:1c:73:91:02:2a:04:de:32:7a:ad:97:c3:26:2b:
         d1:40:aa:ca:dc:a6:1b:aa:c9:68:0f:1b:ae:44:51:e2:04:2a:
         05:63:dc:38:91:97:01:6d:0d:a0:a1:ff:2b:69:a3:05:89:57:
         76:3e:ac:69:f8:42:b9:82:aa:35:c5:77:17:45:eb:29:ec:97:
         bf:bc:68:8c:ae:4e:ba:d5:b6:95:df:87:91:02:f3:e4:72:95:
         4e:4c:24:c9:19:92:43:e7:c1:91:83:97:b7:77:87:fc:97:f6:
         6c:cf:04:07:d1:37:fe:92:9c:20:e8:5c:6b:82:76:30:2e:5e:
         5b:67:fd:65:93:7d:20:b4:d4:f0:9e:dc:31:ca:74:72:34:86:
         e8:f4:18:d3:fd:0e:7b:42:22:29:68:d8:91:5c:3f:75:d3:20:
         1c:3f:c2:60:01:5d:03:25:f8:f7:a8:fc:ec:8b:b6:03:5b:be:
         b6:85:eb:62:63:be:ff:1a:6f:3f:4c:74:31:54:f4:92:07:0b:
         ca:c0:96:de:7c:e2:20:0d:9f:fb:55:19:85:f7:bc:5d:20:dd:
         e4:3c:7f:77:4b:1c:51:91

Generowanie certyfikatów

Certyfikat z NiFi Toolkit

Do wygenerowania certyfikatów dla NiFi, Registry oraz MiNiFi, zostało przygotowane przez fundację Apache narzędzie NiFi Toolkit, które ma o wiele więcej zastosowań, ale w tym przypadku posłuży nam do wykreowania prawidłowych certyfikatów dla środowiska Apache NiFi. W tym celu pobierzemy i rozpakujemy wyżej wspomniane narzędzie w wersji 1.15.3.

sudo wget https://archive.apache.org/dist/nifi/1.15.3/nifi-toolkit-1.15.3-bin.tar.gz
sudo tar vzxf nifi-toolkit-1.15.3-bin.tar.gz
sudo ln -s /opt/nifi-toolkit-1.15.3 /opt/nifi-toolkit
sudo cd nifi-toolkit

W kolejnym kroku musimy przygotować wymagane certyfikaty Root CA i Intermediate CA w postaci plików PEM

sudo cp /root/ssl/rootCA.crt /opt/nifi-toolkit/rootCA.pem
sudo cp /root/ssl/intermediateCA.crt /opt/nifi-toolkit/nifi-cert.pem
sudo cp /root/ssl/intermediateCA.key /opt/nifi-toolkit/nifi-key.key

W ostatnim etapie wygenerujemy certyfikat zgodny z środowiskiem Apache NiFi, wykorzystując do tego wcześniej wygenerowane Intermediate CA oraz Root CA.

sudo /opt/nifi-toolkit/bin/tls-toolkit.sh standalone -n 'nazwa_hosta.domena.pl' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
--subjectAlternativeNames 'nazwa_hosta' \
--subjectAlternativeNames '10.10.0.219' \
-O
tls-toolkit.sh: JAVA_HOME not set; results may vary
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandaloneCommandLine - No nifiPropertiesFile specified, using embedded one.
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - Running standalone certificate generation with output directory /opt/nifi-toolkit
[main] INFO org.apache.nifi.toolkit.tls.util.TlsHelper - Verifying the certificate signature for CN=NiFi Root X2,O=nifi.pl,C=PL
[main] INFO org.apache.nifi.toolkit.tls.util.TlsHelper - Attempting to verify certificate CN=NiFi Root X2,O=nifi.pl,C=PL signature with CN=NiFi Root X1,O=nifi.pl,C=PL
[main] INFO org.apache.nifi.toolkit.tls.util.TlsHelper - Certificate was signed by CN=NiFi Root X1,O=nifi.pl,C=PL
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - Using existing CA certificate /opt/nifi-toolkit/nifi-cert.pem and key /opt/nifi-toolkit/nifi-key.key
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - Writing new ssl configuration to /opt/nifi-toolkit/nazwa_hosta.domena.pl
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - Successfully generated TLS configuration for nazwa_hosta.domena.pl 1 in /opt/nifi-toolkit/nazwa_hosta.domena.pl
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - No clientCertDn specified, not generating any client certificates.
[main] INFO org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone - tls-toolkit standalone completed successfully

Certyfikat został poprawnie utworzony i podpisany przez Intermediate CA oraz zweryfikowany z głównym urzędem certyfikacji Root CA. W artykule Bezpieczna komunikacja pomiędzy NiFi, Registry oraz MiNiFi został przedstawiony sposób instalacji takiego certyfikatu w środowisku NiFi.

W przypadku, gdy potrzebujemy certyfikatu PKCS12, należy wygenerować certyfikat następująco:

./bin/tls-toolkit.sh standalone -n 'nazwa_hosta.domena.pl' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
--subjectAlternativeNames 'IP:10.10.0.132,DNS:nazwa_hosta' \
-T PKCS12 \
-O

Dodatkowe

W kolejnej części przedstawię sposób kreowania certyfikatów z Root CA oraz Intermediate CA, gdybyśmy potrzebowali certyfikatu w innym celu lub dla innej usługi, są to zupełnie opcjonalne kroki, które można pominąć.

Certyfikat z Root CA

W tym celu, należy wygenerować klucz prywatny oraz certyfikat w formacie CSR

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -SHA256 -key server.key -nodes -out server.csr
Country Name (2 letter code) [XX]:PL
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:nifi.pl
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your servers hostname) []:nazwa_hosta.domena.pl
Email Address []:

Please enter the following extra attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Nowoczesne przeglądarki wymagają, aby certyfikat zawierał nazwę FQDN w nazwie DNS SAN, więc musimy utworzyć plik v3.ext, który zawiera następujące elementy:

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

[alt_names]
DNS.1 = nazwa_hosta 
DNS.2 = nazwa_hosta.domena.pl
IP.1 = 10.10.0.132

Na koniec, należy podpisać utworzony wcześniej certyfikat za pomocą Root CA.

sudo openssl x509 -req -SHA256 -extfile v3.ext -days 365 -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt

Certyfikat z Intermediate CA

W ten sam sposób generujemy klucz prywatny oraz certyfikat w postaci CSR

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -SHA256 -key server.key -nodes -out server.csr
Country Name (2 letter code) [XX]:PL
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:nifi.pl
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your servers hostname) []:nazwa_hosta.domena.pl
Email Address []:

Please enter the following extra attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Nowoczesne przeglądarki wymagają, aby certyfikat zawierał nazwę FQDN w nazwie DNS SAN, więc musimy utworzyć plik v3.ext, który zawiera następujące elementy:

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

[alt_names]
DNS.1 = nazwa_hosta 
DNS.2 = nazwa_hosta.domena.pl
IP.1 = 10.10.0.132

Na koniec, należy podpisać utworzony wcześniej certyfikat za pomocą Intermediate CA.

openssl x509 -req -SHA256 -extfile v3.ext -days 365 -in server.csr -CA intermediateCA.crt -CAkey intermediateCA.key -CAcreateserial -out server.crt

Dodanie certyfikatu Root CA do Windows

System Windows, aby mógł traktować wcześniej wygenerowane certyfikaty jako bezpieczne wymaga, aby główny urząd certyfikacji Root CA został dodany do zaufanych urzędów, w tym celu musimy uruchomić mmc.exe.

Wyszukiwanie mmc.exe w systemie Windows

Z menu Plik, należy wybrać opcję Dodaj/Usuń przystawkę, a następnie zaznaczyć Certyfikaty i kliknąć dodaj. Z okna dialogowego wybieramy Konto komputera, następnie Komputer lokalny: (komputer, na którym uruchomiona jest ta konsola), na końcu klikamy zakończ oraz ok. Powinna wyświetlić się przystawka z certyfikatami, jak na poniższym zrzucie ekranu.

Certyfikaty (Komputer lokalny)

Prawym przyciskiem myszy klikamy na Zaufane główne urzędy certyfikacji i rozwijamy Wszystkie zadania i wybieramy opcję Importuj. Wyświetli się okno dialogowe, w którym klikamy dalej, a następnie wybieramy wcześniej wygenerowany Root CA, klikamy dwukrotnie dalej i zakończ. Powtarzamy procedurę również dla Intermediate CA.

Dodane Root CA oraz Intermediate CA w systemie Windows
2 comments
Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *