Własny Urząd Certyfikacji

Series: publications April 14, 2018

Zadaniem Urzędów Certyfikacji (ang. Certificate Authority, CA) jest sprawdzenie tożsamości instytucji, która wnioskuje o wydanie certyfikatu. Urząd Certyfikacji to pewna tożsamość cyfrowa wydająca i podpisująca certyfikaty. Każda przeglądarka internetowa, posiada wbudowaną bazę urzędów (CA), na podstawie której weryfikuje wystawcę przy napotkanym certyfikacie SSL.

Certyfikaty z podpisem własnym lub nieznanego wystawcy, będą generować ostrzeżenia, że tak zabezpieczona strona internetowa nie jest zaufana. Rozwiązaniem tego problemu jest dodanie certyfikatów do przeglądarek.

Posiadanie własnego urzędu certyfikacji pozwala na podpisanie dowolnej domeny.

Przydaje się to zwłaszcza kiedy w obrębie firmy/sieci zarządzamy konkretną domeną, którą chcemy chronić certyfikatem.

Spis treści

Root Certificate

Para klucz i certyfikat główny

Pierwszą parą jaka zostanie utworzone będzie para składająca się z klucza i certyfikatu głównego.

Pamiętajmy, że zazwyczaj główny urząd certyfikacji nie podpisuje bezpośrednio certyfikatów serwera lub klienta - jest on używany do utworzenia jednego lub wielu certyfikatów pośrednich, które zgodnie z zasadą są zaufane przez główny urząd certyfikacji.

Praktyka taka pozwala (i jest to jedna z najważniejszych zalet) na przechowywanie klucza głównego w sposób offline. Jest to kluczowe ze względów bezpieczeństwa ponieważ każde przechwycenie klucza głównego jest katastrofalne w skutkach.

Utworzenie struktury katalogów/plików

Będzie nim:

mkdir -m 0700 /root/ca

Następnie:

cd /root/ca
mkdir certs crl newcerts private
chmod 700 private
touch index.txt index.txt.attr
echo 1000 > serial

Przygotowanie pliku konfiguracyjnego

Kopiujemy poniższą zawartość i zapisujemy do: /root/ca/openssl.cnf:

# OpenSSL root CA configuration file.
# Copy to `/root/ca/openssl.cnf`.

[ ca ]
# `man ca`
default_ca = CA_default

[ CA_default ]
# Directory and file locations.
dir               = /root/ca
certs             = $dir/certs
crl_dir           = $dir/crl
new_certs_dir     = $dir/newcerts
database          = $dir/index.txt
serial            = $dir/serial
RANDFILE          = $dir/private/.rand

# The root key and root certificate.
private_key       = $dir/private/ca.key.pem
certificate       = $dir/certs/ca.cert.pem

# For certificate revocation lists.
crlnumber         = $dir/crlnumber
crl               = $dir/crl/ca.crl.pem
crl_extensions    = crl_ext
default_crl_days  = 30

# SHA-1 is deprecated, so use SHA-2 instead.
default_md        = sha256

name_opt          = ca_default
cert_opt          = ca_default
default_days      = 375
preserve          = no
policy            = policy_strict

[ policy_strict ]
# The root CA should only sign intermediate certificates that match.
# See the POLICY FORMAT section of `man ca`.
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[ policy_loose ]
# Allow the intermediate CA to sign a more diverse range of certificates.
# See the POLICY FORMAT section of the `ca` man page.
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[ req ]
# Options for the `req` tool (`man req`).
default_bits        = 2048
distinguished_name  = req_distinguished_name
string_mask         = utf8only

# SHA-1 is deprecated, so use SHA-2 instead.
default_md          = sha256

# Extension to add when the -x509 option is used.
x509_extensions     = v3_ca

[ req_distinguished_name ]
# See <https://en.wikipedia.org/wiki/Certificate_signing_request>.
countryName                     = Country Name (2 letter code)
stateOrProvinceName             = State or Province Name
localityName                    = Locality Name
0.organizationName              = Organization Name
organizationalUnitName          = Organizational Unit Name
commonName                      = Common Name
emailAddress                    = Email Address

# Optionally, specify some defaults.
countryName_default             = AA
stateOrProvinceName_default     = Internal
localityName_default            =
0.organizationName_default      = Nsbox Ltd
organizationalUnitName_default  =
emailAddress_default            =

[ v3_ca ]
# Extensions for a typical CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

[ usr_cert ]
# Extensions for client certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = client, email
nsComment = "OpenSSL Generated Client Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, emailProtection

[ server_cert ]
# Extensions for server certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth

[ crl_ext ]
# Extension for CRLs (`man x509v3_config`).
authorityKeyIdentifier=keyid:always

[ ocsp ]
# Extension for OCSP signing certificates (`man ocsp`).
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, digitalSignature
extendedKeyUsage = critical, OCSPSigning

Rozszerzenia crl_ext oraz ocsp są opcjonalne.

Utworzenie klucza głównego (root key)

Każdy kto posiada klucz główny może wydawać certyfikaty, dlatego tak ważne jest jego bezpieczne przechowywanie. Klucz główny zostanie zapisane w pliku ca.key.pem.

Zalecane jest utworzenie klucz głównego oraz klucz certyfikatów pośrednich o długości min. 4096 bitów oraz zastosowanie silnego hasła.

cd /root/ca
openssl genrsa -aes256 -out private/ca.key.pem 4096

Enter pass phrase for ca.key.pem: secretpassword
Verifying - Enter pass phrase for ca.key.pem: secretpassword

chmod 400 private/ca.key.pem

Utworzenie certyfikatu głównego (root certificate)

Klucz główny ca.key.pem zostanie użyty do utworzenia certyfikatu głównego ca.cert.pem. Nadamy certyfikatowi głównemu długą datę wygaśnięcia, np. 20 lat. Po tym czasie wszystkie podpisane certyfikaty staną się nie ważne.

Za każdym razem wykorzystując polecenie openssl z parametrem req należy określić plik konfiguracyjny do użycia z opcją -config, w przeciwnym razie OpenSSL wykorzysta domyślny plik /etc/pki/tls/openssl.cnf.

cd /root/ca
openssl req -config openssl.cnf \
-key private/ca.key.pem \
-new -x509 -days 7300 -sha256 -extensions v3_ca \
-out certs/ca.cert.pem

Enter pass phrase for private/ca.key.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AA]:AA
State or Province Name []:Internal
Locality Name []:
Organization Name []:Nsbox Ltd
Organizational Unit Name []:Nsbox Ltd Certificate Authority
Common Name []:Nsbox Ltd Root CA
Email Address []:

chmod 444 certs/ca.cert.pem

Weryfikacja klucza i certyfikatu głównego

W tym celu wykonujemy:

openssl x509 -noout -text -in certs/ca.cert.pem

Pola Issuer oraz Subject są identyczne - jest tak ponieważ certyfikat jest samo podpisany. Samo podpisany certyfikat mówi o tym, że jest to certyfikat główny.

Intermediate Certificate

Para klucz i certyfikat pośredni

Pośredni urząd certyfikacji (CA) to podmiot, który może podpisywać certyfikaty w imieniu głównego urzędu certyfikacji. Główny urząd certyfikacji podpisuje certyfikat pośredni, tworząc łańcuch zaufania.

Celem stosowania pośredniego urzędu certyfikacji jest przede wszystkim bezpieczeństwo. Klucz główny może być przechowywany w trybie offline i używany tak rzadko, jak to możliwe. Jeśli klucz pośredni zostanie naruszony, główny urząd certyfikacji może unieważnić certyfikat pośredni i utworzyć nową pośrednią parę kryptograficzną.

Utworzenie struktury katalogów/plików

Będzie nim:

mkdir /root/ca/intermediate

Następnie:

cd /root/ca/intermediate
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt index.txt.attr
echo 1000 > serial

crlnumber

Dodamy jeszcze plik crlnumber do pośredniego drzewa katalogów CA. Plik ten służy do śledzenia list odwołania certyfikatów.

echo 1000 > /root/ca/intermediate/crlnumber

Przygotowanie pliku konfiguracyjnego

Kopiujemy poniższą zawartość i zapisujemy do: /root/ca/intermediate/openssl.cnf:

# OpenSSL intermediate CA configuration file.
# Copy to `/root/ca/intermediate/openssl.cnf`.

[ ca ]
# `man ca`
default_ca = CA_default

[ CA_default ]
# Directory and file locations.
dir               = /root/ca/intermediate
certs             = $dir/certs
crl_dir           = $dir/crl
new_certs_dir     = $dir/newcerts
database          = $dir/index.txt
serial            = $dir/serial
RANDFILE          = $dir/private/.rand

# The root key and root certificate.
private_key       = $dir/private/intermediate.key.pem
certificate       = $dir/certs/intermediate.cert.pem

# For certificate revocation lists.
crlnumber         = $dir/crlnumber
crl               = $dir/crl/intermediate.crl.pem
crl_extensions    = crl_ext
default_crl_days  = 30

# SHA-1 is deprecated, so use SHA-2 instead.
default_md        = sha256

name_opt          = ca_default
cert_opt          = ca_default
default_days      = 375
preserve          = no
policy            = policy_loose

# This ensures the SANs are copied into the certificate. The other ways to
# copy the dns names are broken.
copy_extensions   = copy

[ policy_strict ]
# The root CA should only sign intermediate certificates that match.
# See the POLICY FORMAT section of `man ca`.
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[ policy_loose ]
# Allow the intermediate CA to sign a more diverse range of certificates.
# See the POLICY FORMAT section of the `ca` man page.
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[ req ]
# Options for the `req` tool (`man req`).
default_bits        = 2048
distinguished_name  = req_distinguished_name
string_mask         = utf8only

# SHA-1 is deprecated, so use SHA-2 instead.
default_md          = sha256

# Extension to add when the -x509 option is used.
x509_extensions     = v3_ca

[ req_distinguished_name ]
# See <https://en.wikipedia.org/wiki/Certificate_signing_request>.
countryName                     = Country Name (2 letter code)
stateOrProvinceName             = State or Province Name
localityName                    = Locality Name
0.organizationName              = Organization Name
organizationalUnitName          = Organizational Unit Name
commonName                      = Common Name
emailAddress                    = Email Address

# Optionally, specify some defaults.
countryName_default             = AA
stateOrProvinceName_default     = Internal
localityName_default            =
0.organizationName_default      = Nsbox Ltd
organizationalUnitName_default  =
emailAddress_default            =

[ v3_ca ]
# Extensions for a typical CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

[ usr_cert ]
# Extensions for client certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = client, email
nsComment = "OpenSSL Generated Client Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, emailProtection

[ server_cert ]
# Extensions for server certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth

[ crl_ext ]
# Extension for CRLs (`man x509v3_config`).
authorityKeyIdentifier=keyid:always

[ ocsp ]
# Extension for OCSP signing certificates (`man ocsp`).
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = critical, digitalSignature
extendedKeyUsage = critical, OCSPSigning

Jego zawartość jest bardzo podobna do pliku openssl.cfg podczas generowania klucza głównego. Różni się natomiast następującymi opcjami:

dir             = /root/ca/intermediate
private_key     = $dir/private/intermediate.key.pem
certificate     = $dir/certs/intermediate.cert.pem
crl             = $dir/crl/intermediate.crl.pem
policy          = policy_loose

Utworzenie klucza pośredniego (intermediate key)

Zasada taka sama jak w przypadku klucza głównego - długość min. 4096 oraz silne hasło.

cd /root/ca
openssl genrsa -aes256 -out intermediate/private/intermediate.key.pem 4096

Enter pass phrase for intermediate.key.pem: secretpassword
Verifying - Enter pass phrase for intermediate.key.pem: secretpassword

chmod 400 intermediate/private/intermediate.key.pem

Utworzenie certyfikatu pośredniego (intermediate certificate)

Użyjemy certyfikatu pośredniego do tworzenia żądania podpisania certyfikatu (CSR). Metadane powinny pasować do głównego urzędu certyfikacji - jedynym polem które powinno być różne jest pole CN.

cd /root/ca
openssl req -config intermediate/openssl.cnf -new -sha256 \
-key intermediate/private/intermediate.key.pem \
-out intermediate/csr/intermediate.csr.pem

Enter pass phrase for private/ca.key.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AA]:AA
State or Province Name []:Internal
Locality Name []:
Organization Name []:Nsbox Ltd
Organizational Unit Name []:Nsbox Ltd Certificate Authority
Common Name []:Nsbox Ltd Intermediate CA
Email Address []:

Aby utworzyć certyfikat pośredni, należy użyć głównego urzędu certyfikacji wykorzystując przy tym rozszerzenie v3_intermediate_ca do podpisania pośredniego pliku żądania. Certyfikat pośredni powinien być ważny przez krótszy okres niż certyfikat główny.

cd /root/ca
openssl ca -config openssl.cnf -extensions v3_intermediate_ca \
-days 3650 -notext -md sha256 \
-in intermediate/csr/intermediate.csr.pem \
-out intermediate/certs/intermediate.cert.pem

Enter pass phrase for ca.key.pem: secretpassword
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

chmod 444 intermediate/certs/intermediate.cert.pem

Po tej czynności możemy podejrzeć zawartość pliku index.txt, który przechowuje bazę danych certyfikatów. Nie usuwajmy ani nie edytujmy tego pliku ręcznie. Powinien on teraz zawierać linię, która odnosi się do certyfikatu pośredniego.

Weryfikacja klucza i certyfikatu pośredniego

Podobnie jak w przypadku certyfikatu głównego, sprawdzamy, czy metadane certyfikatu pośredniego są poprawne. W tym celu wykonujemy:

openssl x509 -noout -text \
-in intermediate/certs/intermediate.cert.pem

Zweryfikujmy certyfikat pośredni na podstawie certyfikatu głównego. Poniższy zrzut wskazuje, że łańcuch zaufania jest nienaruszony.

openssl verify -CAfile certs/ca.cert.pem \
intermediate/certs/intermediate.cert.pem

intermediate.cert.pem: OK

Utworzenie łańcucha certyfikatów dla CA

Gdy aplikacja (np. przeglądarka internetowa) próbuje zweryfikować certyfikat podpisany przez pośredni urząd certyfikacji, musi również zweryfikować certyfikat pośredni na podstawie certyfikatu głównego. Aby zakończyć łańcuch zaufania, tworzymy łańcuch certyfikatów urzędu certyfikacji, aby przedstawić go aplikacji.

W tym celu należy połączyć razem certyfikaty pośrednie i główny. Później użyjemy tego pliku do weryfikacji certyfikatów podpisanych przez pośredni urząd certyfikacji.

cat intermediate/certs/intermediate.cert.pem \
certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
chmod 444 intermediate/certs/ca-chain.cert.pem

Łańcuch certyfikatów musi zawierać certyfikat główny, ponieważ żadna aplikacja kliencka nie ma go w swojej bazie. Lepszą opcją, szczególnie jeśli administrujesz intranetem, jest zainstalowanie głównego certyfikatu na każdym kliencie, który musi się połączyć. W takim przypadku plik łańcucha musi zawierać jedynie certyfikat pośredni.

Server Certificate

Na tym etapie będziemy podpisywać certyfikaty za pomocą naszego pośredniego urzędu certyfikacji. Możesz używać tych podpisanych certyfikatów w różnych sytuacjach, na przykład do zabezpieczania połączeń z serwerem www lub do uwierzytelniania klientów łączących się z daną usługą.

Poniższe kroki są podobne jak w przypadku zakupu certyfikatu u dostawcy. Osoba trzecia może utworzyć własny klucz prywatny i żądanie podpisania certyfikatu (CSR) bez ujawniania swojego klucza prywatnego dostarczając Tobie plik żądania finalnie otrzymując od Ciebie podpisany certyfikat.

Utworzenie klucza prywatnego (private key)

Utworzony klucz główny i pośredni mają długość 4096 bitów. Certyfikaty serwera i klienta zwykle wygasają po roku, więc możemy bezpiecznie użyć 2048 bitów.

Chociaż 4096 bitów jest nieco bezpieczniejsze niż 2048 bitów, spowalnia to nawiązywanie sesji TLS i znacznie zwiększa obciążenie procesora podczas nawiązywania połączenia przez klienta. Z tego powodu większość witryn używa 2048-bitowych par.

Przed rozpoczęciem generowania właściwych certyfikatów pamiętajmy o haśle.

Jeśli tworzysz parę kryptograficzną do użytku z serwerem www (np. Apache), będziesz musiał wprowadzić to hasło przy każdym ponownym uruchomieniu serwera. Możesz pominąć opcję -aes256, aby utworzyć klucz bez hasła.

cd /root/ca
openssl genrsa \
-out intermediate/private/example.com.key.pem 2048
chmod 400 intermediate/private/example.com.key.pem

Utworzenie żądania oraz certyfikatu serwera

Użyjemy klucza prywatnego do utworzenia żądania podpisania certyfikatu (CSR). Dane CSR nie muszą pasować do pośredniego urzędu certyfikacji. W przypadku certyfikatów serwera nazwa pospolita musi być w pełni kwalifikowaną nazwą domeny (np. www.example.com), natomiast w przypadku certyfikatów klienta może to być dowolny unikalny identyfikator (np. adres e-mail). Zwróć uwagę, że nazwa zwykła nie może być taka sama jak ta dla certyfikatu głównego lub certyfikatu pośredniego.

Pamiętajmy o odpowiednim wystawieniu certyfikatu dla danej domeny - powinna być to zawsze domena główna (bez www) niezależnie czy wykorzystywany będzie wildcard.

cd /root/ca
openssl req -config intermediate/openssl.cnf \
-key intermediate/private/example.com.key.pem \
-new -sha256 -out intermediate/csr/example.com.csr.pem

Enter pass phrase for www.example.com.key.pem: secretpassword
You are about to be asked to enter information that will be incorporated
into your certificate request.
-----
Country Name (2 letter code) [XX]:AA
State or Province Name []:Internal
Locality Name []:
Organization Name []:Nsbox Ltd
Organizational Unit Name []:Nsbox Ltd Services
Common Name []:www.example.com
Email Address []:

Alternatywną opcją jest wykorzystanie parametru -config, który pozwala na dokładniejsze określenie parametrów:

cd /root/ca
openssl req -out intermediate/csr/example.com.csr.pem \
-new -key intermediate/private/example.com.key.pem -config <(
cat <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=AA
ST=Internal
O=Nsbox Ltd
OU=Nsbox Ltd Services
CN=example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
DNS.2 = *.example.com
EOF
)

Kolejny krok to utworzenie certyfikatu. W tym celu użyj pośredniego urzędu certyfikacji do podpisania pliku żądania. Jeśli certyfikat ma być używany na serwerze, użyj rozszerzenia server_cert. Jeśli certyfikat ma być używany do uwierzytelniania użytkownika, użyj rozszerzenia usr_cert.

Certyfikaty mają zazwyczaj okres ważności jednego roku, chociaż urząd certyfikacji zwykle zapewnia dodatkowe kilka dni dla wygody.

cd /root/ca
openssl ca -config intermediate/openssl.cnf \
-extensions server_cert -days 375 -notext -md sha256 \
-in intermediate/csr/www.example.com.csr.pem \
-out intermediate/certs/www.example.com.cert.pem
chmod 444 intermediate/certs/www.example.com.cert.pem

Po tym plik intermediate/index.txt powinien zawierać nowy wpis.

Weryfikacja klucza i certyfikatu serwera

W tym celu wykonujemy:

openssl x509 -noout -text \
-in intermediate/certs/www.example.com.cert.pem

Oraz sprawdzamy czy certyfikat ma prawidłowy łańcuch zaufania - na podstawie przygotowanego wcześniej łańcucha certyfikatów (ca-chain.cert.pem):

openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
intermediate/certs/www.example.com.cert.pem

www.example.com.cert.pem: OK

Utworzenie pełnego łańcucha certyfikatów

W tym rozdziale utworzony został łańcuch certyfikatów składający się z certyfikatu głównego oraz certyfikatów pośrednich. Taki łańcuch należy zaimportować w kliencie np. przeglądarce.

Następny krok to utworzenie łańcucha, który umieścimy po stronie serwera.

cat intermediate/certs/ca-chain.cert.pem intermediate/certs/www.example.com.cert.pem > intermediate/certs/full-chain.cert.pem
chmod 444 intermediate/certs/full-chain.cert.pem

Plik ten razem z kluczem prywatnym, który został wygenerowany razem z plikiem żądania umieszczamy na serwerze.

W przypadku certyfikatów podpisywanych przez standardowe urzędy certyfikacji nie jest zalecane dodawanie do łańcucha certyfikatu głównego - te certyfikaty dostarczane są razem z systemem/przeglądarką i dodają niepotrzebny narzut i opóźnienia w komunikacji między serwerem a klientem.

Import certyfikatów w przeglądarce

Na sam koniec najłatwiejsza rzecz - aby otrzymać zieloną kłódkę importujemy certyfikat główny oraz pośredni w przeglądarce.

W tym celu przechodzimy do ustawień SSL/TLS przeglądarki a następnie w zakładce Authorities wybieramy IMPORT.


built with Jekyll and trimstray blog — read the fine print