SSL certifikát

Prokazuje totožnost při SSL komunikaci, čímž umožňuje přístup k zabezpečeným webovým stránkám (https) a FTP serverům (ftps).

  • Sdílený certifikát
    • zdarma
    • každý uživatel bude vždy upozorněn na to, že používá sdílený certifikát
    • není nutná veřejná IP adresa
  • Vlastní (osobní) certifikát
    • podmínkou funkčnosti je veřejná IP adresa (cena dle používaného webhostingu)
    • Let's Encrypt (SSL certifikát zdarma)
      • Dokumentace:
        • letsencrypt.cz/jak-to-funguje.html
        • cs.wikipedia.org/wiki/Let%27s_Encrypt
        • letsencrypt.org
      • Návody:
        • root.cz/clanky/let-s-encrypt-ssl-certifikaty-od-listopadu-zdarma
        • root.cz/clanky/let-s-encrypt-v-praxi-jak-jsem-presel-na-https
        • datacentrum.wedos.com/a/365/lets-encrypt-na-webhostingu.html
        • a2hosting.com/kb/security/ssl/securing-your-site-with-a-lets-encrypt-ssl-certificate
      • Testování:
        • ssllabs.com/ssltest/index.html
    • RapidSSL
      • 1 490,- Kč ročně
      • certifikát je obsažen ve většině prohlížečů

U certifikátů, které nejsou obsaženy v prohlížeči musí každý uživatel minimálně jednou potvrdit důvěryhodnost certifikátu – přijmout certifikát.

Grafickou nadstavbou openssl pro správu certifikační autority je např. program tinyCA (tinyCA2):

  • práce s různými nezávislými autoritami
  • správa serveru X509 a S/MIME včetně klientských certifikátů
  • export certifikátů do formátu PEM, DER, TXT, PKCS#12 atd.
  • zneplatnění certifikátů, přidáním do seznamu neplatných certifikátů

Typy souborů:

  • .crt – veřejný klíč (formát PEM)
  • .key – soukromý klíč
  • .p12 – veřejný i soukromý klíč (formát PKCS#12) – instaluje se do osobních certifikátů prohlížeče

Vytvoření certifikátu podepsaného sám sebou

Vytvoření certifikátu:

  • openssl req -new -x509 -nodes -out certifikat-public.crt -keyout certifikat-private.key -days 1098
  • jako Common Name (CN) zadejte požadovanou doménu (pro testovací účely může být jako obsah pole použita i IP adresa)
  • u ostatních položek můžete nechat výchozí hodnoty (Enter)

Zobrazení obsahu souborů:

  • openssl x509 -in certifikat-public.crt -text
  • openssl rsa -in certifiakt-private.key -text

Některé aplikace vyžadují certifikát a klíč v jednom souboru, můžeme je tedy spojit příkazem:

cat certifikat-public.crt certifikat-private.key > certifikat-crtkey.pem

Vytvoření vlastní certifikační autority (CA)

  1. Dle potřeb upravte konfigurační soubor /etc/ssl/openssl.cnf(nepoužívejte diakritiku):
    • dir = /etc/ssl/myCA # Korenovy adresar CA
      certificate = $dir/cacert_my.pem # Certifikat CA
      private_key = $dir/private/cakey_my.pem # Soukromy klic CA
      
      default_days = 1098 # Platnost certifikatu (3 roky)
      
      policy = policy_anything
      
      default_bits = 4096
      
      countryName_default = CZ
      stateOrProvinceName_default = JM
      localityName_default = Vyskov
      0.organizationName_default = DHosting.cz 
      organizationalUnitName_default = CA
      commonName = Common Name (e.g. Certification Authority DHosting.cz, myweb.com)
      emailAddress_default = info@email.cz
      
      authorityKeyIdentifier=keyid,issuer:always
  2. Vytvořte adresáře /etc/ssl/myCA/a jeho podadresáře csr/, newcerts/private/.
  3. V adresáři myCA/ vytvořte 2 soubory příkazem
    • touch /etc/ssl/myCA/index.txt; echo 01 > /etc/ssl/myCA/serial
      
  4. V adresári myCA/ vytvořte soukromý klíč a certifikát CA (pro použití výchozích nastavení stiskněte klávesu Enter)
    • openssl req -new -x509 -nodes -out cacert_my.pem -keyout cakey_my.pem -days 3600
    • jako Common Name zadejte libovolný název např. Certifikacni autorita TD (Tomas Danek)
    • u ostatních položek nechejte výchozí hodnoty (Enter)
    • soubor cakey_my.pempřesuňte do adresáře /etc/ssl/myCA/private/a nastavte práva chmod 400
  5. Obsah certifikátu je možné převést do čitelného tvaru příkazy
    • openssl x509 -in cacert_my.pem -text > cacert_my.pem.txt
      
  6. Pokud vytvoříte kopii souboru cacert_my.pema změníte u něj koncovku na .crt, je možné tento certifikát instalovat jako důvěryhodnou autoritu na počítače uživatelů.

Vytvoření vlastního certifikátu serveru podepsaného CA

  1. V adresáři /etc/ssl/myCA/csr/vytvořte žádost o certifikát
    • openssl req -new -nodes -out myweb.cz.csr -keyout /etc/ssl/myCA/private/myweb.cz.key
      • jako Common Name zadejte myweb.cz(obsah pole Common Name se kontroluje při komunikaci se serverem přes https – pro testovací účely může být jako obsah pole použita i IP adresa)
      • u ostatních položek nechejte výchozí hodnoty (Enter)
      • u souboru /etc/ssl/myCA/private/myweb.cz.keynastavte práva chmod 400
        • v případě potřeby je možné jej
          • zašifrovat příkazem
          • openssl enc -des3 -salt -in myweb.cz.key -out myweb.cz.key_encrypt
          • rozšifrovat příkazem
          • openssl enc -des3 -d -salt -in myweb.cz.key_encrypt -out myweb.cz.key
  2. Vytvořenoý certifikát podepište certifikační autoritou
    • openssl ca -in myweb.cz.csr -out /etc/ssl/myCA/certs/myweb.cz.crt
      • v /etc/ssl/myCA/certs/se vytvoří certifikát myweb.cz.crta do podadresáře newcerts/certifikační autority se uloží kopie 01.pem(příkaz c_rehash /etc/ssl/myCA/certsumožňuje dodatečnou regeneraci souboru ca-certificates.crt, který obsahujíce všechny certifikáty)
  3. Otisk certifikátu je možné zobrazit příkazem:
    openssl x509 -noout -fingerprint -in myweb.cz.crt
    • (výchozí parametr -sha1je možné změnit na -md5)
  4. Vygenerování klíče .p12 (z veřejného klíče .crt a rozšifrovaného klíče .key) vhodného pro instalaci do osobních certifikátů prohlížeče:

    openssl pkcs12 -export -in /etc/ssl/myCA/certs/myweb.cz.crt -inkey /etc/ssl/myCA/private/myweb.cz.key -out cert.p12