GNU/Linux >> Znalost Linux >  >> Linux

Integrace CFSSL se správcem certifikátů Lemur

V předchozím článku o správci certifikátů Lemur jsme pro klientské certifikáty nepoužili žádnou kořenovou certifikační autoritu (CA) třetí strany. Proto v tomto tutoriálu bude PKI nastaveno pomocí CFSSL (Cloudflare's SSL) a integrováno s projektem Lemur. V současné době neexistuje žádný dokument, který by uživateli pomohl integrovat CFSSL s nastavením Lemur.

Poznámka:Protože používáme CFSSL jako kořenovou autoritu třetí strany, musíme ji nejprve nastavit na samostatném počítači (nicméně jsme ji nastavili na stejném boxu Lemur) a poté změnit soubor lemur conf tak, aby používal CFSSL pro podepsání certifikátu.

Instalace CFSSL

CloudFlare SSL je implementován pomocí programovacího jazyka „Go“, takže je na stroji vyžadována instalace balíčku „go“. Následující příkaz nainstaluje požadovaný balíček do počítače.

1. Nainstalujte Go 

Balíček Go se nainstaluje ze zdrojového kódu.

wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz  

Rozbalte stažený archiv a nainstalujte jej do požadovaného umístění v systému. Instalujeme jej do adresáře /usr/local. Můžete to také umístit na požadované místo v systému.

tar -xzvf go1.10.1.linux-amd64.tar.gz 
mv go /usr/local  

Po instalaci balíčku Go je také nutné nastavit proměnnou prostředí pro binární soubor Go. (Můžete jej přidat do uživatelského profilu, takže jej nastavte natrvalo). Obvykle je potřeba nastavit 3 proměnné prostředí jako GOROOTGOPATHPATH .

GOROOT je umístění, kde je ve vašem systému nainstalován balíček Go.

export GOROOT=/usr/local/go 

GOPATH je umístění vašeho pracovního adresáře.

export GOPATH=$HOME/go

Nyní nastavte PATH proměnná pro přístup je binární v celém systému.

exportovat PATH=$PATH:$GOROOT/bin:$GOPATH/bin

2. Příkaz Test Go

Nyní zadejte do terminálu příkaz "go". Zobrazí výstup jako na následujícím snímku obrazovky.

jdi

3. Nainstalujte CFSSL

Na tuto platformu Ubuntu musíme nainstalovat CFSSL. Když jsou požadované proměnné prostředí pro GO správně nastaveny, bude proces instalace CFSSL snadný.

A. Následující příkaz stáhne obslužný program CFSSL a sestaví jej do $GOPATH/bin/ path.

jdi get -u github.com/cloudflare/cfssl/cmd/cfssl

b. Následující příkaz nainstaluje zásuvný modul json balíčku CFSSL. Je vyžadován, protože CFSSL zpracovává požadavky JSON.

 přejděte na -u github.com/cloudflare/cfssl/cmd/cfssljson

C. jednoduše nainstalujte všechny programy CFSSL pomocí níže uvedeného příkazu. Tento příkaz stáhne, sestaví a nainstaluje všechny obslužné programy (včetně cfssl, cfssljson a mkbundle mimo jiné) do adresáře $GOPATH/bin/.

jdi získat -u github.com/cloudflare/cfssl/cmd/...

Jak je ukázáno níže, spusťte v terminálu příkaz "cfssl" a zobrazí se všechny operace podporované CFSSL PKI.

Nastavení PKI CFSSL

Nyní bude aplikace cfssl použita k nastavení PKI pro projekt Lemur. Konfigurační soubory "CSR_configuration" a "signing_configuration" jsou důležité v nastavení CFSSL. Konfigurační soubor „CSR“ obsahuje konfiguraci pro pár klíčů, který se chystáte vytvořit, a konfigurace „Podepisování“, jak už název zní, nastavuje pravidla konfigurace.

Vytvořit ROOT CA

Pro kořenovou CA zkontrolujte následující konfigurační soubor CSR (který budeme nazývat csr_ROOT_CA.json):

  • csr_ROOT_CA.json
 { "CN":"MY-ROOT-CA", "key":{ "algo":"ecdsa", "size":256 }, "names":[ { "C":"UK", "L":"Londýn", "O":"Moje organizace", "OU":"Moje organizační jednotka uvnitř mé organizace" } ], "ca":{ "expiry":"262800h" }}

Stručné vysvětlení různých polí je uvedeno níže.

  • Konfigurační soubor se řídí schématem pojmenování X.509, takže jsou povinná následující pole:
    • CN (Common Name) – název entity. V případě kořenové CA je to název kořenové CA;
    • C  (Země)
    • L (umístění)
    • O (Organizace)
    • OU (organizační jednotka)
  • Nyní je řada specifických polí specifických pro CFSSL:
    • KEY – Definuje charakteristiky kláves:
      • Algo – Určuje algoritmus. Může být „rsa“ nebo „ecdsa“ pro algoritmy RSA nebo ECDSA. Nyní se ECDSA doporučuje vždy, pokud starší zařízení nejsou relevantní, ale to platí pouze pro zařízení mladší než dva nebo tři roky. Jinak se použije RSA.
      • velikost – Určuje velikost klíče. 256 se použije pro klíč ecdsa. Pro klíče RSA jsou doporučené hodnoty 2048 nebo 4096.
    • ca – Definuje charakteristiky CA a v tomto případě platnost klíče v hodinách, ano, v hodinách. V tomto případě je to 30 let (24x356x30), protože kořenové oprávnění bude trvat tak dlouho, jak jste předpokládali zabezpečení kořenového klíče.

Nyní spusťte následující příkaz, abyste skutečně vytvořili kořenovou certifikační autoritu pro Lemur.

cfssl gencert -initca csr_ROOT_CA.json | cfssljson -holý root_ca

Výše uvedený příkaz vytvoří na počítači následující soubory.

  • root_ca.csr – Požadavek na podpis certifikátu kořenové certifikační autority, který pro kořenovou certifikační autoritu nedává smysl, a proto nebude nikdy použit. Protože kořenová CA je podepsána sama sebou.
  • root_ca.pem – Certifikát kořenové CA. Toto je soubor, který chcete distribuovat co nejvíce.
  • root_ca.key – Toto je kořenový klíč CA. Udržujte tento soubor v bezpečí, jako by na něm závisel váš život. Pro veřejnou kořenovou certifikační autoritu je to vlastně pravda.

Kořenová CA je podepsána sama sebou, takže přejděte k dalšímu kroku pro generování zprostředkující CA.

Zprostředkující CA

Vytváření středně pokročilé CA není povinné, ale odpovídá osvědčenému postupu. Konečným cílem mít zprostředkující CA je mít přechodný krok z hlediska zabezpečení. Obvykle. klíč kořenové CA je uchováván v offline počítači a používá se pouze v případě, že potřebujete podepsat zprostředkující certifikát CA.

K vytvoření zprostředkujícího CA je vyžadován konfigurační soubor „csr_INTERMEDIATE_CA.json“.

  • csr_INTERMEDIATE_CA.json – žádost o podpis certifikátu pro středně pokročilou CA
{ "CN":"My-Intermediate-CA", "key":{ "algo":"ecdsa", "size":256 }, "names":[ { "C":"UK", "L":"Londýn", "O":"Moje organizace", "OU":"Moje organizační jednotka uvnitř mé organizace" } ], "ca":{ "expiry":"42720h" }}

Soubor „root_to_intermediate_ca.json“ obsahuje konfiguraci podepisování kořenové CA.

{ 
"signing":{ "default":{ "usages":["digitální podpis","cert sign","crl sign","signing"], "expiry":"262800h" , "ca_constraint":{"is_ca":true, "max_path_len":0, "max_path_len_zero":true} } }}

Tento soubor obsahuje nejdůležitější parametry certifikátu.

  • použití – jaká použití může podepisovaný certifikát provádět. Možnosti podporované CFSSL jsou následující:
    • „digitální podpis“,
    • „certifikační znak“,
    • „znak crl“,
    • „podepisování“
    • atd
  • is_ca – toto pole je použitelné pouze pro generování certifikátů intermediálních CA a umožňuje vygenerovanému certifikátu podepisovat další certifikáty. Pokud ponecháte toto pole na certifikátu koncového zařízení, bude odmítnuto většinou běžných prohlížečů a operačních systémů.

Následující příkaz vytvoří Intermediate CA proti výše uvedené konfiguraci.

cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare medium_ca

Výše uvedený příkaz vytvoří následující soubory Intermediate CA.

  • intermediate_ca.csr – Žádost o podpis certifikátu zprostředkující CA.
  • intermediate_ca.pem – Certifikát středně pokročilé CA, nepodepsaný nikým, a proto nepoužitelný.
  • intermediate_ca.key – Toto je klíč pro střední CA. Udržujte tento soubor v bezpečí.

Následující příkaz ukazuje podepsání certifikátu zprostředkujícího CA kořenovým CA.

znak cfssl -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json medium_ca.csr | cfssljson -bare medium_ca

Výše uvedený příkaz podepíše soubor medium_ca.pem. Nyní je nastavení kořenového a zprostředkujícího CA dokončeno. Je důležité udržovat klíče kořenové CA a konfigurační soubory v bezpečí. Dalším krokem je vytvoření certifikátu pro klientské zařízení nebo zákazníka. Zde integrujeme nastavení CFSSL s projektem Lemur a bude vygenerován certifikát klienta.

Spustit PKI CFSSL

Chcete-li spustit PKI založené na CFSSL, přejděte do adresáře certs a spusťte následující příkaz.

cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888

Výstup výše uvedeného příkazu bude následující.

[e-mail chráněný]:/home/john/Desktop/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888
2018/05/20 16:35:18 [INFO] Inicializace podpisovače
2018/05/20 16:35:19 [UPOZORNĚNÍ] nemohl inicializovat podpisovač ocsp:otevřít :žádný takový soubor nebo adresář
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/scaninfo' je povolen
2018/05/20 16:35:19 [VAROVÁNÍ] koncový bod 'ocspsign' je deaktivován:podepisující osoba není inicializována
2018/05/20 16:35:19 [INFO] koncový bod '/' je povolen
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/info' je povoleno
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/gencrl' je povolen
2018/05/20 16:35:19 [INFO] koncový bod ' /api/v1/cfssl/scan' je povoleno
2018/05/20 16:35:19 [VAROVÁNÍ] koncový bod 'crl' je zakázán:cert db není nakonfigurován (chybí -db-config)
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/certinfo' je povolen
2018/05/20 16:35:19 [VAROVÁNÍ] koncový bod 'revoke' je zakázán:cert db not conf igured (chybí -db-config)
2018/05/20 16:35:19 [INFO] bundler API připraveno
2018/05/20 16:35:19 [INFO] endpoint '/api/ v1/cfssl/bundle' je povoleno
2018/05/20 16:35:19 [INFO] klíč pro nastavení / generátor CSR
2018/05/20 16:35:19 [INFO] koncový bod ' /api/v1/cfssl/newkey' je povoleno
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/init_ca' je povolen
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/sign' je povolen
2018/05/20 16:35:19 [VAROVÁNÍ] koncový bod 'authsign' je zakázán:{"code":5200,"message":"Neplatné nebo neznámé zásady"}
2018/05/20 16:35:19 [INFO] koncový bod '/api/v1/cfssl/newcert' je povolen
2018/05 /20 16:35:19 [INFO] Nastavení obslužného programu dokončeno.
2018/05/20 16:35:19 [INFO] Nyní poslouchám na 192.168.10.151:8888

IP adresa stroje je 192.168.10.151 a port je 8888 . Povolte tomuto portu ve bráně firewall používat CFSSL.

POZNÁMKA:Následující příkaz je pouze vodítkem pro použití nástroje cfssl.

{ cfssl serve [-adresa adresy] [-ca cert] [-ca-bundle bundle] \
[-ca-key key] [-int-bundle bundle] [-int-dir dir] [ -port port] \
[-soubor metadat] [-remote remote_host] [-config config] \
[-responder cert] [-responder-key key] [-db-config db-config] }

Nyní je konfigurace CFSSL dokončena a běží na počítači. Dalším krokem je integrace CFSSL s Lemur.

Konfigurace lemura pro PKI CFSSL

Nyní bude konfigurační soubor "lemur.conf.py" Lemur upraven (jako jsou klíče URL, ROOT a Intermediate). Konfigurační soubor bude obsahovat informace o CFSSL. Cesta konfiguračního souboru lemura je  „/home/lemur/.lemur/lemur.conf.py“.

CFSSL_URL ="http://192.168.10.151:8888"
cfssl_root ="" "----- Začátek certifikátu -----
miiccjccahegawibagiuahfypc4rpk92g1zhhu3q9urvf+8wcgyikoizizj0eawiw
9bem4ied2J8/w4wdtyabe5ezwiHanjjCryzcs/twing -----KONEC CERTIFIKÁTU-----"""
CFSSL_INTERMEDIATE ="""-----ZAČÁTEK CERTIFIKÁT-----
MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw
qM9lEbr>-BBAl-y-tku/qM9lEbr>-BBAl-Tku/qM9lEbr>-BBAl-KU """

Nyní spusťte příkaz "lemur start" pro použití lemur.conf.py s nastavením CFSSL.

Vytváření certifikátů pomocí CFSSL

Podle našeho předchozího článku o Lemurovi přejděte na řídicí panel a vytvořte klientské certifikáty pomocí kořenové CA CFSSL. Nejprve vytvořte novou certifikační autoritu a jako kořenovou CA vyberte plugin CFSSL.

1. nastavení různých parametrů nového oprávnění.

2. vyberte nově nastavený CFSSL Plugin jako kořenovou CA.

Po nastavení nové certifikační autority v Lemuru je dalším krokem vygenerování certifikátu pomocí nově nastaveného pluginu CFSSL.


Linux
  1. Nepodařilo se podepsat Csr pomocí kořenového klíče Ca?

  2. Počítání znaků každého řádku s Wc?

  3. Použití –exclude With The Du Command?

  1. Analyzujte linuxové jádro pomocí ftrace

  2. Naučte se zkratky správce oken i3 Linux

  3. Začínáme se Správcem souborů Plesk

  1. Zakažte přihlášení pomocí účtu root

  2. Nainstalujte a používejte nástroj Lets Encrypt Certbot na CentOS 7 s Apache

  3. Získejte terminál vestavěný do správce souborů Nautilus s Nautilus Terminal 3