デフォルトのCA証明書バンドルの場所


18

.pem証明書ファイルをデフォルトのCA証明書バンドルに追加する必要がありますが、デフォルトのCA証明書バンドルがどこに保存されているかわかりません。

このデフォルトバンドルに新しい.pemファイルを追加する必要があります。--capathを使用して自分の場所を指定するよりも、それをしたい

cURLはどこを見るべきかを明確に知っていますが、その場所を明らかにするcURLコマンドは見当たりません。この場所を明らかにするコマンドはありますか?どうすれば見つけることができますか?

cURLに従って:
サーバーのCA証明書を既存のデフォルトCA証明書バンドルに追加します。使用するCAバンドルのデフォルトパスは、-with-ca-bundleオプションを使用してconfigureを実行し、選択したパスを指定することで変更できます。

ありがとう


どのオペレーティングシステムを使用していますか?
クリスティアンCiupitu

回答:


20

で実行するcurlstrace、手がかりが得られる場合があります。

strace curl https://www.google.com |&grep open

たくさんの出力がありますが、終わり近くで私は見ます:

open( "/ etc / ssl / certs / 578d5c04.0"、O_RDONLY)= 4

証明書が保存される場所です。


2
+1について教えてくれましたstrace
ロバートダンドン

strace明らかに、macOSでは利用できません。「同等」dtrussは「dtrace:dtraceの初期化に失敗しました:DTraceには追加の特権が必要です」と表示されました。だから私sudoはそれを使った。「dtrace:curlの実行に失敗しました:dtraceは、制限された資格で署名された実行可能ファイルを制御できません」と応答しました。あまり役に立たない。
LS

17

curlの「bin /」、つまり「curl」バイナリが存在する場所に、プログラム「curl-config」が必要です。

./curl-config --ca

CAバンドルのインストールパスを指定します。

whatis curl-configを実行しました:「libcurlインストールに関する情報を取得する」ので、libcurlがインストールされている場合にのみ利用可能になると思います。


1
これを実行するにはUbuntuにパッケージをインストールする必要がありました(インストールされていない場合は使用可能なオプションのリストが表示されます)が、このコマンドを使用すると適切な場所に導かれました!
ロバートダンドン

2
curl-configプログラムは、プログラムやインストールのすべてのバージョンでは使用できません。たとえば、一部の管理者は、プログラムがビルド構成ツールにすぎないと考えているため、プログラムの目的を理解せず、インストールしない場合があります。さらに、プログラムを必要とするユーザーがシステムの管理者でない場合、インストールできません。私は、2つのシステムへのアクセス権を持って、1本のプログラムを持っていない、他は与えない何も出力をするためにcurl-config --ca
LS

私はこの回答を受け入れられたものよりも好みstraceます- 設定情報を見つけるために使用する必要はありません
ケンウィリアムズ

7

簡単な方法を見つけました:間違ったファイル名でを使用する--cacertと、出力にパスが表示されます。

例:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

これは良い解決策だと思った。ただし、curlから「77」エラーが表示されましたが、追加情報は表示されませんでした。
LS

@LS冗長フラグを追加してみてください:-vまたは--verbose
Chananel P

2

Linux(Ubuntu、Debian)

CAをdir / usr / local / share / ca-certificates /にコピーします

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

CAストアを更新する

sudo update-ca-certificates

CAを削除し、CAストアを更新します。

sudo update-ca-certificates --fresh

Linux(CentOs 6)

ca-certificatesパッケージをインストールします。

yum install ca-certificates

動的CA設定機能を有効にします。update-ca-trust force-enable新しいファイルとして追加します/etc/pki/ca-trust/source/anchors/

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux(CentOs 5)

信頼できる証明書をファイルに追加します /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html非常に素晴らしいリンク。いくつかの一般的なOSに追加する方法。


これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
ジェラルドシュナイダー

@GeraldSchneider>コメントを読んで、行動した;)
BiG_NoBoDy

1

curlの作成者であるhaxx.seからCAルート証明書バンドルをダウンロードできます。次に、.pemに証明書を追加し、-cacertオプションでcurlを使用するときに参照します


1

-v URLにhttpsを使用します。

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

いや。それは私にとってそのようなものを示していませんでした。実際、その出力を、-kオプションを追加して別の実行と比較し、違いがあるかどうかを確認しました。違いはありませんでした。
LS

@LSはURLにhttpsを持っていますか?
フィリップレゴ

0

デフォルトのCAバンドルの場所はOSに依存します。RHEL5では、/ etc / pki / tls / certs / ca-bundle.pemにあります。他の種類のLinuxまたはLinux以外のOSでは、別の場所にある場合があります。


だから私はそのファイルを検索するだけだと思う
...-Slinky

2
別のアイデア:#strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.