Lokasi Bundel Sertifikat CA default

18

Saya perlu menambahkan file .pem cert ke bundel CA cert default saya, tetapi saya tidak tahu di mana bundel CA Cert default disimpan.

Saya perlu menambahkan file .pem baru ke bundel default ini. Saya lebih suka melakukan itu daripada menentukan lokasi saya sendiri menggunakan --capath

CURL jelas tahu ke mana harus mencari tetapi saya tidak melihat perintah CURL yang mengungkapkan lokasi. Apakah ada perintah yang akan mengungkapkan lokasi ini? Bagaimana saya bisa menemukannya?

Menurut cURL:
Tambahkan CA cert untuk server Anda ke bundel CA cert default yang ada. Path default bundel CA yang digunakan dapat diubah dengan menjalankan configure dengan opsi --with-ca-bundle yang menunjukkan path pilihan Anda.

Terima kasih

Slinky
sumber
Sistem operasi apa yang Anda gunakan?
Cristian Ciupitu

Jawaban:

20

Berlari curldengan stracemungkin memberi Anda petunjuk.

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

Banyak output, tetapi tepat di akhir saya melihat:

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

di situlah sertifikat saya disimpan.

Flup
sumber
2
+1 untuk menunjukkan kepada saya tentang strace!
Robert Dundon
stracetidak tersedia di macOS, rupanya. "Setara" dtrussmengatakan kepada saya "dtrace: gagal menginisialisasi dtrace: DTrace membutuhkan hak istimewa tambahan". Jadi saya menggunakannya sudo. Di mana ia menjawab "dtrace: gagal mengeksekusi curl: dtrace tidak dapat mengontrol executable yang ditandatangani dengan hak terbatas". Tidak terlalu membantu.
LS
17

Seharusnya ada program 'curl-config' di curl's 'bin /', yaitu tempat biner 'curl' berada.

./curl-config --ca

memberikan path instalasi bundel ca.

Saya baru saja melakukan whatis curl-config: "Dapatkan informasi tentang instalasi libcurl" jadi saya kira itu hanya akan tersedia jika libcurl diinstal, yang saya anggap standar.

lm713
sumber
1
Saya harus menginstal paket di Ubuntu untuk menjalankan ini (Anda akan ditunjukkan daftar opsi yang tersedia jika tidak diinstal), tetapi menggunakan perintah ini membuat saya ke tempat yang tepat!
Robert Dundon
2
The curl-configProgram tidak tersedia dengan semua versi dari program atau instalasi. Sebagai contoh, beberapa admin mungkin tidak memahami tujuan program dan tidak menginstalnya karena mereka pikir itu hanya alat konfigurasi build. Lebih lanjut, jika pengguna yang membutuhkan program bukan admin dari suatu sistem, mereka tidak dapat menginstalnya. Saya memiliki akses ke dua sistem, seseorang tidak memiliki program ini, yang lain memberikan tidak ada output untuk curl-config --ca.
LS
Saya lebih suka jawaban ini daripada yang diterima - menggunakan straceuntuk menemukan informasi konfigurasi seharusnya tidak perlu.
Ken Williams
7

Saya menemukan cara mudah: gunakan --cacertdengan nama file yang salah , hasilnya akan menunjukkan path.

Contoh:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs
Chananel P
sumber
Saya pikir ini tampak seperti solusi yang bagus. Namun, curl memberi saya kesalahan "77", tetapi bukan informasi tambahan.
LS
@LS cobalah menambahkan bendera verbose: -v atau
--verbose
2

Linux (Ubuntu, Debian)

Salin CA Anda ke dir / usr / local / share / ca-sertifikat /

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

Perbarui toko CA

sudo update-ca-certificates

Hapus CA Anda dan perbarui CA store:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Instal paket ca-sertifikat:

yum install ca-certificates

Aktifkan fitur konfigurasi CA dinamis: perbarui-ca-trust force-enable Tambahkan sebagai file baru ke /etc/pki/ca-trust/source/anchors/:

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

Linux (CentOs 5)

Tambahkan sertifikat tepercaya Anda ke file /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 tautan yang sangat bagus, yang menjelaskan, cara menambahkannya ke beberapa OS populer.

BiG_NoBoDy
sumber
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Gerald Schneider
@GeraldSchneider> Anda berkomentar membaca, dan bertindak;)
BiG_NoBoDy
1

Anda dapat mengunduh bundel CA Root Certificates dari haxx.se yang merupakan pembuat curl. kemudian tambahkan saja sertifikat Anda di .pem mereka dan lihat ketika menggunakan curl dengan opsi --cacert

iammyr
sumber
1

-v dengan https di URL.

$ 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*
Philip Rego
sumber
Nggak. Itu tidak menunjukkan hal seperti itu untuk saya. Bahkan, saya membandingkan hasilnya dengan yang lain menambahkan -kopsi untuk melihat apakah ada perbedaan. Tidak ada perbedaan.
LS
@ LS apakah Anda memiliki https di URL Anda?
Philip Rego
0

Lokasi bundel CA default bergantung pada OS. Pada RHEL5, ini terletak di /etc/pki/tls/certs/ca-bundle.pem. Pada rasa lain dari OS Linux atau non-linux, mungkin ada di lokasi yang berbeda.

John
sumber
Jadi saya kira saya hanya mencari file itu kemudian ...
Slinky
2
Gagasan lain: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1