ตำแหน่ง CA Cert Bundle เริ่มต้น


18

ฉันต้องเพิ่มไฟล์. pem cert ให้กับชุดใบรับรอง CA เริ่มต้นของฉัน แต่ฉันไม่ทราบว่าเก็บชุดใบรับรอง CA Cert เริ่มต้นไว้ที่ใด

ฉันต้องการผนวกไฟล์. pem ใหม่ของฉันลงในชุดข้อมูลเริ่มต้นนี้ ฉันอยากทำมากกว่าระบุสถานที่ของตัวเองโดยใช้ --capath

cURL รู้ได้อย่างชัดเจนว่าจะมองที่ไหน แต่ฉันไม่เห็นคำสั่ง cURL ใด ๆ ที่เปิดเผยตำแหน่ง มีคำสั่งที่จะเปิดเผยตำแหน่งนี้หรือไม่? ฉันจะหามันได้อย่างไร

ตามที่ cURL:
เพิ่มใบรับรอง CA สำหรับเซิร์ฟเวอร์ของคุณไปยังชุดใบรับรอง CA เริ่มต้นที่มีอยู่ เส้นทางเริ่มต้นของชุดข้อมูล CA ที่ใช้สามารถเปลี่ยนแปลงได้โดยการรันการกำหนดค่าด้วยตัวเลือก --with-ca-bundle ซึ่งระบุเส้นทางที่คุณเลือก

ขอบคุณ


คุณใช้ระบบปฏิบัติการอะไร
Cristian Ciupitu

คำตอบ:


20

ทำงานcurlด้วยstraceอาจทำให้คุณมีเงื่อนงำ

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

ผลผลิตมาก แต่ใกล้ถึงจุดสิ้นสุดฉันเห็น:

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

ที่เก็บใบรับรองของฉัน


2
+1 สำหรับแสดงให้ฉันเห็นstrace!
Robert Dundon

straceไม่พร้อมใช้งานบน macOS "เทียบเท่า" dtrussบอกฉัน "dtrace: ล้มเหลวในการเริ่มต้น dtrace: DTrace ต้องใช้สิทธิ์เพิ่มเติม" ดังนั้นฉันใช้sudoกับมัน ซึ่งมันตอบว่า "dtrace: ล้มเหลวในการเรียกใช้งาน curl: dtrace ไม่สามารถควบคุมไฟล์ปฏิบัติการที่ลงชื่อด้วยการให้สิทธิ์ จำกัด " ไม่ค่อยมีประโยชน์
LS

17

ควรมีโปรแกรม 'curl-config' ใน 'bin /' ของ curl นั่นคือตำแหน่งที่ 'curl' อยู่ในไบนารี

./curl-config --ca

ให้เส้นทางการติดตั้ง ca bundle

ฉันเพิ่งทำ whatis curl-config: "รับข้อมูลเกี่ยวกับการติดตั้ง libcurl" ดังนั้นฉันเดาว่ามันจะใช้ได้เฉพาะเมื่อติดตั้ง libcurl ซึ่งฉันคิดว่าเป็นมาตรฐาน


1
ฉันต้องติดตั้งแพคเกจบน Ubuntu เพื่อเรียกใช้งานนี้ (คุณจะเห็นรายการตัวเลือกที่ใช้ได้หากยังไม่ได้ติดตั้ง) แต่การใช้คำสั่งนี้ทำให้ฉันถูกที่แล้ว!
Robert Dundon

2
curl-configโปรแกรมไม่สามารถใช้ได้กับทุกรุ่นของโปรแกรมหรือติดตั้ง ตัวอย่างเช่นผู้ดูแลระบบบางคนอาจไม่เข้าใจวัตถุประสงค์ของโปรแกรมและไม่ได้ติดตั้งเพราะพวกเขาคิดว่าเป็นเพียงเครื่องมือสร้างการกำหนดค่า เพิ่มเติมหากผู้ใช้ที่ต้องการโปรแกรมไม่ใช่ผู้ดูแลระบบของพวกเขาไม่สามารถติดตั้งได้ ฉันมีการเข้าถึงทั้งสองระบบหนึ่งไม่ได้มีโปรแกรมนี้ที่อื่น ๆ ที่จะช่วยให้การส่งออกไม่มีcurl-config --caสำหรับ
LS

ฉันชอบคำตอบนี้กับคนที่ยอมรับ - ใช้straceเพื่อค้นหาข้อมูลการกำหนดค่าไม่จำเป็น
Ken Williams

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

ฉันคิดว่านี่ดูเหมือนเป็นทางออกที่ดี อย่างไรก็ตามข้อผิดพลาดให้ฉัน "77" แต่ไม่ใช่ข้อมูลเพิ่มเติม
LS

@LS ลองเพิ่มธง verbose: -v or --verbose
Chananel P

2

Linux (Ubuntu, Debian)

คัดลอก CA ของคุณไปยัง dir / usr / local / share / ca-certificate /

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:

yum install ca-certificates

เปิดใช้งานคุณลักษณะการกำหนดค่า CA แบบไดนามิก: update-ca-trust แรงเปิดใช้งานเพิ่มเป็นไฟล์ใหม่เพื่อ/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/th/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.htmlลิงก์ที่ดีมากซึ่งอธิบาย วิธีเพิ่มลงในระบบปฏิบัติการยอดนิยมหลายระบบ


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Gerald Schneider

@ GeraldSchneider> คุณแสดงความคิดเห็นอ่านและดำเนินการ;)
BiG_NoBoDy

1

คุณสามารถดาวน์โหลดบันเดิลใบรับรอง CA Root จากhaxx.seซึ่งเป็นผู้สร้าง curl จากนั้นเพียงแค่เพิ่มใบรับรองของคุณใน. pem ของพวกเขาและอ้างถึงมันเมื่อใช้ curl กับตัวเลือก --cacert


1

-v ด้วย https ใน 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*

Nope มันไม่ได้แสดงอะไรแบบนั้นสำหรับฉัน ในความเป็นจริงฉันเปรียบเทียบผลลัพธ์ของมันกับการวิ่งอีกครั้งเพื่อเพิ่ม-kตัวเลือกเพื่อดูว่ามีความแตกต่างหรือไม่ ไม่มีความแตกต่าง
LS

@LS คุณมี https ใน URL ของคุณหรือไม่
Philip Rego

0

ตำแหน่งของบันเดิล CA เริ่มต้นขึ้นอยู่กับระบบปฏิบัติการ บน RHEL5 จะอยู่ใน /etc/pki/tls/certs/ca-bundle.pem สำหรับรสชาติอื่น ๆ ของ Linux หรือระบบปฏิบัติการที่ไม่ใช่ linux อาจอยู่ในตำแหน่งที่แตกต่างกัน


ดังนั้นฉันเดาว่าฉันแค่ค้นหาไฟล์นั้นแล้ว ...
344 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.