GNU/Linux >> Znalost Linux >  >> Linux

Zpřístupnění certifikátů CA nástrojům příkazového řádku Linuxu

Všechny známé grafické webové prohlížeče se dodávají se sbírkou známých a důvěryhodných certifikátů certifikační autority (CA), takže když navštívíte web s certifikátem podepsaným jedním z těchto certifikátů CA, prohlížeč tomuto webu také důvěřuje. V opačném případě prohlížeč projde řadou upozornění a možností přidat výjimku poté, co vás vyzve k ověření certifikátu. Existují také možnosti importu dalších certifikátů CA, jako jsou ty zdokumentované pro Firefox.

Použití certifikátů CA s nástroji příkazového řádku

Certifikáty CA lze také zpřístupnit na příkazovém řádku. Balíček, který je součástí mnoha distribucí, včetně Red Hat Enterprise Linux a Fedora, se nazývá ca-certificates . Tento balíček je označen jako „sada certifikátů CA vybraných Mozilla Foundation pro použití s ​​Internet PKI“. Tento balíček obsahuje stejné známé certifikáty CA, které najdete ve Firefoxu. Může být použit jakoukoli aplikací CLI, která se dívá přímo na /etc/pki/ca-trust/extracted adresář, spolu s aplikacemi CLI, které načítají jeden z důvěryhodných modulů PKCS#11.

Nástroje příkazového řádku, jako je curl a wget může tyto certifikáty CA použít k ověření certifikátů serveru. Mnoho nástrojů dodávaných s Red Hat Enterprise Linux také používá tyto certifikáty, včetně pro interakce s podporou Red Hat (redhat-support-tool ), clustery Red Hat OpenShift (oc ) a servery Red Hat Satellite 6 (hammer ). Mnoho dalších interakcí s rozhraními API serveru také používá SSL/TLS a měly by ověřovat nabízené certifikáty.

ca-certificates balíček nainstalován, mohu použít curl pro zobrazení nebo stažení obsahu URL z webu pomocí certifikátu podepsaného dobře známou CA bez chyby: 

$ curl https://access.redhat.com -o /tmp/sample

% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 103k 0 103k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 337k

Pokud se pokusím o přístup na interní web, který má certifikát podepsaný svým držitelem (nebo certifikát podepsaný CA, který není součástí ca-certificates package) Zobrazí se mi zpráva, že připojení bylo odmítnuto, protože certifikát není důvěryhodný:

$ curl https://somehost.internal-FQDN/

curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

Některá dokumentace doporučuje jednoduché nezabezpečené připojení pro tyto interní a důvěryhodné weby. Curl se může nespolehlivě spojit s -k možnost:

$ curl -k https://somehost.internal-FQDN/

Nebo, pokud jsem ověřil a stáhl svůj interní certifikát CA, mohu říct curl k ověření webu pomocí tohoto certifikátu:

$ curl --cacert /path/to/cert-file https://somehost.internal-FQDN/

Ostatní programy jsou podobné. S nástrojem OpenShift and Origin pro správu aplikací (oc ), připojení k výchozímu nainstalovanému clusteru nemusí rozpoznat vygenerovaný certifikát CA s vlastním podpisem, který cluster používá k podepisování jiných interních certifikátů. Tento problém zahrnuje připojení ke kontejnerům CodeReady:

$ oc login -u developer -p developer https://api.crc.testing:6443

The server uses a certificate signed by an unknown authority.

You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n):

Pokud máte kopii certifikátů, zadejte klientský certifikát pomocí --client-certificate="" nebo certifikát CA s --certificate-authority="" možnost při použití oc příkaz.

Server Red Hat Satellite a nástroj CLI hammer fungují podobně, ale certifikát CA lze zadat na příkazovém řádku nebo v souboru ~/.hammer/cli_config.yml soubor. hammer příkaz má také možnost importovat certifikát Satellite CA přímo do uživatelského .hammer konfigurační adresář:

$ hammer --fetch-ca-cert https://satellite.example.com

CA certificate for https://satellite.example.com was stored to 

..output omitted...

Tento příkaz zpřístupní certifikát pouze jednomu uživateli a musel by být opakován pro každého uživatele v systému. Aby byl certifikát dostupný všem uživatelům v systému, výstup příkazu hammer dokonce navrhuje použití ca-certificates .

Aktualizace ca-certificates k ověření webů s interním certifikátem CA

Namísto ručního zadávání certifikátu CA s každým příkazem můžeme přidat naše interní certifikáty CA do důvěryhodnosti CA, kterou poskytuje ca-certificates balík. Tento balíček poskytuje adresářovou strukturu v /etc/pki/ pro správu certifikátů a příkaz update-ca-trust ke správě "konsolidované a dynamické konfigurace certifikátů CA a související důvěryhodnosti:"

$ ls /etc/pki/ca-trust/ 
ca-legacy.conf extracted README source

$ ls /etc/pki/ca-trust/source 
anchors blacklist ca-bundle.legacy.crt README 

Chcete-li přidat certifikát, stáhněte si jej, vložte jej do /etc/pki/ca-trust/source/anchors a poté spusťte příkaz update-ca-trust . Pro tyto dva úkoly budete muset být root:

$ sudo curl http://satellite.example.com/pub/katello-server-ca.crt -o /etc/pki/ca-trust/source/anchors/satellite-ca.crt
$ sudo update-ca-trust

Po vydání příkazu update je certifikát zpřístupněn prostřednictvím /etc/pki/ca-trust/extracted strom:

$ ls /etc/pki/ca-trust/extracted 
edk2 java openssl pem README

Aplikace, které se podívají do tohoto adresáře za účelem ověření certifikátů, mohou používat jakýkoli z uvedených formátů. Příkaz update zpracovává kopie, převody a konsolidaci pro různé formáty. Manuál pro update-ca-trust obsahuje více informací o struktuře adresářů, formátech a způsobech přístupu k certifikátům, ale rychlý způsob, jak vypsat všechny předměty certifikátů v balíčku, je pomocí následujícího awk a openssl příkazy:

$ awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Nyní, když jsem přidal certifikát CA pro svůj satelitní server, mohu použít curl bez dalších možností certifikátu pro přístup k API:

$ curl --request GET --user admin https://satellite.example.com/katello/api/organizations 

Enter host password for user 'admin': 

{ "total": 1, "subtotal": 1,

...output omitted...

Totéž platí pro oc příkazy, hammer příkazy a mnoho dalších aplikací příkazového řádku. Tyto nástroje mohou používat certifikáty spravované ca-trust pro ověření vašich připojení.

[Chcete se dozvědět více o zabezpečení? Podívejte se na kontrolní seznam zabezpečení IT a dodržování předpisů.]


Linux
  1. Mých 5 oblíbených nástrojů pro správu systému Linux

  2. Historie příkazového řádku v Linuxu

  3. Textové editory příkazového řádku v Linuxu

  1. Chyba prohlížeče certifikátu SSL

  2. Seznam všech dostupných certifikátů ssl ca

  3. Umístění certifikátu SSL v systému UNIX/Linux

  1. Vytvoření oddílu pro obnovení v Embedded Linuxu?

  2. Microsoft Teams je nyní k dispozici na Linuxu

  3. Je k dispozici lehká alternativa X11?