update-ca-trust 抽出は、ca-バンドルに証明書を追加しません。

update-ca-trust 抽出は、ca-バンドルに証明書を追加しません。
CentOS Linux release 7.6.1810 (Core)
Kernel 5.1.11-1.el7.elrepo.x86_64

証明書ファイルを入れました。/etc/pki/ca-trust/source/anchors

ファイルは次のようになります。

-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIQeqkpty5ghoxP8YfCRe+7qjANBgkqhkiG9w0BAQUFADBP
some strings
FnpKVwAq6UcYOu4AoXweaqOOMsLNSw==
-----END CERTIFICATE-----

その後、update-ca-trust extractバンドルファイルで私の証明書を見ることができると予想しましたが、/etc/pki/tls/certs/ca-bundle.crtその中に新しいものはありません。そしてls -al最新の編集時間を見せるので今ではなく2ヶ月前に変更されました。

最初はファイルでこれを試しました.crt。ただし、名前を変更しても問題は解決しませんでした.crt。抽出する前に.pem試してみましたが、役に立ちませんでした。それについて何も言わなかった。update-ca-trust enableupdate-ca-trust force-enable/var/log/messages

問題を解決するにはどうすればよいですか?

答え1

長い話を短く

update-ca-trust成功しない限り、証明書ファイルは次の場所に抽出されません。ca-bundle.crt

openssl x509 -noout -text -in <cert_file> | grep --after-context=2 "X509v3 Basic Constraints" | grep "CA:TRUE"

私はこの問題を解決するために数時間を費やしました。その根は、次のX.509拡張にあります。基本制約証明書がCAに属しているかどうかを示すために使用されます。

私のおおよその結果:

  1. このupdate-ca-bundleツールは実際にはシェルスクリプトなので、内部で何が起こっているのかを簡単に確認できます。
  2. スクリプトはp11-kit異なるフィルタを使用し、異なるバンドルファイルを生成するたびにユーティリティを複数回呼び出します。
  3. これは実際にca-bundle.crtフィルタを使用してtls-ca-bundle.pem作成されたファイルへのリンクです。したがって、「CA証明書」を除くすべての証明書は無視されます。p11-kitca-anchors
  4. 証明書がCAであるかどうかは、次の要素によって決定されます。基本制約X.509拡張。これは証明書をCAの一部としてマークします。
  5. 次のコマンドを使用して、すべてのX.509拡張を一覧表示できます。openssl x509 -noout -text -in <cert_file>
  6. したがって、CA の一部としてマークされていない証明書ファイルはすべてフィルタ処理され、必須ファイルp11-kitca-bundle.crtエクスポートされません。

コメントでこの部分を修正してください。

答え2

正確に何を求めているのかわかりませんが、次のステップは私にとって効果的でした。 「ca trust」を有効にしてファイルをコピーして抽出し、確認しました。

$ update-ca-trust enable
$ cp ZScalar.pem /etc/pki/ca-trust/source/anchors/
cp: overwrite ‘/etc/pki/ca-trust/source/anchors/ZScalar.pem’? yes
$ update-ca-trust extract
$ openssl verify  ZScalar.crt
ZScalar.crt: OK

この手順がうまくいかない場合は、「openssl verify」コマンドの出力を公開してください。

それ以外の場合、抽出された証明書は「/etc/pki/ca-trust/extracted/openssl」または「/etc/pki/ca-trust/extracted/pem」に移動されます。

答え3

1. CA証明書取得の問題

openssl x509 -in ca.crt -noout -text |grep -i "issue"

出力は次のとおりです。

Issuer: CN=something_strings

2. /etc/pki/tls/certs/ca-bundle.crtで問題を見つけます。

grep -i "something_strings" /etc/pki/tls/certs/ca-bundle.crt

出力は次のとおりです。

something_strings

結果が得られたら、証明書が正常に追加されました。

この内容を適用するには、サーバーを再起動する必要があります。

答え4

CA証明書は、ca-trustバンドル内のシステムに存在する必要があります。 「openssl x509」コマンドは、一度に単一のPEMエンコード証明書で機能すると予想されます。デフォルトのバンドルには多くの証明書が含まれているため、最初の証明書のみが表示されます。

すべての発行者を表示:

openssl crl2pkcs7 -nocrl -certfile /etc/pki/tls/certs/ca-bundle.crt | openssl pkcs7 -print_certs | grep subject | head

関連情報