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.
S 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ů.]