よく知られているすべてのグラフィカルウェブブラウザには、既知の信頼できる認証局(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セキュリティとコンプライアンスのチェックリストを確認してください。]