GNU/Linux >> Linux の 問題 >  >> Linux

LinuxコマンドラインツールでCA証明書を利用できるようにする

よく知られているすべてのグラフィカルウェブブラウザには、既知の信頼できる認証局(CA)証明書のコレクションが付属しているため、これらのCA証明書のいずれかで署名された証明書を使用してサイトにアクセスすると、ブラウザもそのサイトを信頼します。それ以外の場合、ブラウザは一連の警告とオプションを実行して、証明書の確認を促した後、例外を追加します。 Firefox用に文書化されているものなど、追加のCA証明書をインポートするオプションもあります。

コマンドラインユーティリティでのCA証明書の使用

CA証明書は、コマンドラインでも使用できるようにすることができます。 Red Hat Enterprise LinuxやFedoraを含む多くのディストリビューションに含まれているパッケージは、ca-certificatesと呼ばれます。 。このパッケージには、「インターネットPKIで使用するためにMozillaFoundationによって選択されたCA証明書のセット」が含まれていると自称しています。このパッケージには、Firefoxにあるのと同じよく知られたCA証明書が含まれています。 /etc/pki/ca-trust/extractedを直接参照するCLIアプリケーションで使用できます。 ディレクトリと、PKCS#11信頼モジュールの1つをロードするCLIアプリケーション。

curlなどのコマンドラインユーティリティ およびwget これらのCA証明書を使用して、サーバー証明書を検証できます。 Red Hat Enterprise Linuxで提供される多くのツールも、Red Hatサポート(redhat-support-tool)との対話を含め、これらの証明書を使用します。 )、Red Hat OpenShiftクラスター(oc )、およびRed Hat Satellite 6サーバー(hammer )。サーバーAPIインターフェースとの他の多くの相互作用もSSL/TLSを使用し、提供された証明書を検証する必要があります。

ca-certificatesを使用 パッケージがインストールされているので、curlを使用できます 有名なCAによって署名された証明書を使用してサイトからURLコンテンツをエラーなしで表示またはダウンロードするには:

$ 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

自己署名証明書(またはca-certificatesに含まれていないCAによって署名された証明書)がある内部サイトにアクセスしようとした場合 パッケージ)証明書が信頼されていないため、接続が拒否されたというメッセージが表示されます:

$ 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.

一部のドキュメントでは、これらの内部サイトおよび信頼できるサイトへの単純な安全でない接続を推奨しています。 Curlは-kと安全に接続できない可能性があります オプション:

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

または、内部CA証明書を確認してダウンロードした場合は、curlに通知できます。 その証明書でサイトを確認するには:

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

他のプログラムも同様です。アプリケーションを管理するためのOpenShiftおよびOriginツールを使用(oc )、デフォルトでインストールされたクラスタへの接続は、クラスタが他の内部証明書に署名するために使用する、生成された自己署名CA証明書を認識しない場合があります。この問題には、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):

証明書のコピーがある場合は、--client-certificate=""を使用してクライアント証明書を指定します オプション、または--certificate-authority=""を含むCA証明書 オプション、ocを使用する場合 コマンド。

RedHatSatelliteサーバーとCLIツールのhammer 同様に機能しますが、CA証明書はコマンドラインまたは~/.hammer/cli_config.ymlで指定できます。 ファイル。 hammer コマンドには、SatelliteCA証明書をユーザーの.hammerに直接インポートするオプションもあります。 構成ディレクトリ:

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

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

..output omitted...

このコマンドは、証明書を1人のユーザーのみが使用できるようにするため、システム上のユーザーごとに繰り返す必要があります。システム上のすべてのユーザーが証明書を利用できるようにするために、hammerコマンドの出力では、ca-certificatesの使用も提案されています。 。

ca-certificatesを更新しています 内部CA証明書を使用してサイトを検証する

各コマンドでCA証明書を手動で指定する代わりに、ca-certificatesによって提供されるCA信頼に内部CA証明書を追加できます。 パッケージ。このパッケージは、/etc/pki/にディレクトリ構造を提供します 証明書とコマンドupdate-ca-trustを管理します 「CA証明書と関連する信頼の統合された動的な構成」を管理するには:

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

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

証明書を追加するには、証明書をダウンロードして、/etc/pki/ca-trust/source/anchorsに配置します。 ディレクトリを作成し、コマンドupdate-ca-trustを実行します。 。次の2つのタスクをルートする必要があります。

$ 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

updateコマンドが発行されると、証明書は/etc/pki/ca-trust/extractedから利用できるようになります。 ツリー:

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

このディレクトリを参照して証明書を検証するアプリケーションは、提供されている任意の形式を使用できます。 updateコマンドは、さまざまな形式のコピー、変換、統合を処理します。 update-ca-trustのマニュアルページ には、ディレクトリ構造、形式、および証明書へのアクセス方法に関する詳細情報がありますが、バンドル内のすべての証明書サブジェクトを一覧表示する簡単な方法は、次のawkを使用することです。 およびopenssl コマンド:

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

Satellite ServerのCA証明書を追加したので、curlを使用できます。 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...

ocについても同じことが言えます コマンド、hammer コマンド、および他の多くのコマンドラインアプリケーション。これらのユーティリティは、ca-trustによって管理される証明書を使用できます 接続を検証します。

[セキュリティについてもっと知りたいですか? ITセキュリティとコンプライアンスのチェックリストを確認してください。]


Linux
  1. 私の5つのお気に入りのLinuxシステム管理者ツール

  2. 軽量 X11 の代替品はありますか?

  3. Linux のオーバークロック ツール

  1. 利用可能なすべての ssl ca 証明書を一覧表示する

  2. Linux で中間 CA を信頼していませんか?

  3. UNIX/Linux での SSL 証明書の場所

  1. 組み込みLinuxでリカバリパーティションを作成しますか?

  2. Linuxのコマンドラインテキストエディタ

  3. SSL証明書ブラウザエラー