วิธีแก้ไขปัญหาใบรับรอง CA กับ Curl ใน Ubuntu 14.04


14

ฉันใช้ Ubuntu 14.04 เมื่อฉันใช้ curl ฉันได้รับข้อผิดพลาดต่อไปนี้:

curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath:

จากสิ่งที่ฉันรวบรวมจาก googling ตำแหน่ง CAfile ที่ค้นหาไม่ถูกต้องสำหรับ Ubuntu (และไม่มีอยู่ในคอมพิวเตอร์ของฉัน) /etc/ssl/certs/ca-certificates.crtเป็นตำแหน่งที่เหมาะสม

โซลูชันส่วนใหญ่เกี่ยวข้องกับการตั้งค่าตัวแปรสภาพแวดล้อมCURL_CA_BUNDLEให้กับตำแหน่งที่เหมาะสมหรือเพิ่มcacert=/etc/ssl/certs/ca-certificates.crtลงในไฟล์ (สร้างใหม่) .curlrcในโฮมไดเรกทอรีของฉัน ฉันลองทั้งสองอย่างแล้วและไม่แก้ปัญหาทั้งหมด curl กำลังค้นหาตำแหน่งนี้ แต่ก็ยังใช้งานไม่ได้ทำให้เกิดข้อผิดพลาด:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

ฉันยังลองถอนการติดตั้งและติดตั้ง curl ใหม่ใน Ubuntu และอัปเดต CA certs ของฉัน$ sudo update-ca-certificates --fresh ซึ่งอัปเดต certs แต่ก็ยังไม่ได้ทำข้อผิดพลาด 60 หายไป

ฉันไม่ได้มีความรู้เกี่ยวกับ CA certs และสงสัยว่าฉันตั้งใจเพิ่มใบรับรองที่เซ็นชื่อด้วยตนเองในอดีต บางทีโดยบังเอิญฉันไม่รู้

ไม่มีใครรู้วิธีการที่จะแก้ไขปัญหานี้? มีวิธีที่จะเริ่มต้นใหม่กับคอนเสิร์ตของฉันจริง ๆ หรือไม่? หรือไม่มีใครรู้ว่าฉันจะรู้ได้อย่างไรว่าใบรับรองที่ลงชื่อด้วยตนเองนี้อยู่ที่ใดและจะลบอย่างไร

PS: ฉันไม่ต้องการใช้แฟล็ก -k (aka --insecure) ฉันต้องการทำงานนี้ให้ปลอดภัย

คำตอบ:


11

หลังจากค้นคว้าและทำงานในช่วงสองสามวันที่ผ่านมาฉันได้ทำงานและคำตอบก็ค่อนข้างง่าย

ฉันต้องการตั้งค่าcapath=/etc/ssl/certs/ใน.curlrcไฟล์ของฉัน

สิ่งนี้ทำให้ curl ทำงานบนบรรทัดคำสั่ง ในการรับ Curl ให้ทำงานใน R ต่อไป (ซึ่งฉันพบปัญหาครั้งแรก) ฉันต้องมีไฟล์cacert=/etc/ssl/certs/ca-certificates.crtของฉัน.curlrcเหมือนที่เคยลองมาก่อน/etc/pki/tls/certs/ca-bundle.crt

ฉันยังไม่รู้ว่าเหตุใดฉันจึงเห็นข้อผิดพลาดเกี่ยวกับใบรับรองที่ลงชื่อด้วยตนเอง

จากการค้นพบแบบสุ่มอื่น ๆ ฉันได้ดาวน์โหลดใบรับรองจากเว็บไซต์ Curl ด้วย:

sudo wget http://curl.haxx.se/ca/cacert.pem

ในcertsไดเรกทอรีเดียวกัน ต้องcafileชี้ไปที่งานนี้เช่นกัน ในที่สุดฉันก็นำมันกลับมาca-certificates.crtและมันก็ยังใช้ได้อยู่

ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงทำงานได้หรือสิ่งที่เกิดขึ้น แต่ได้รับการแก้ไขแล้ว


9

cafile key ไม่ทำงานสำหรับฉัน (curl 7.45.0) แต่ cacert (จาก - ตัวเลือก cacert) ไฟล์. curlrcของฉัน:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt

1
สิ่งนี้ใช้ได้กับฉันใน Ubuntu 16.04!
Joost Döbken

0

เราประสบปัญหาเดียวกันกับหนึ่งในโปรแกรม C ++ ของเราใน Ubuntu 14.04.5 กระบวนการ. curlrcไม่มีผลบังคับใช้

นี้ได้รับการแก้ไขโดยการดาวน์โหลดCA-certificates.crtเพื่อ/etc/ssl/certs/ca-certificates.crtและการสร้างสัญลักษณ์การเชื่อมโยงCA-bundle.crtภายใต้/ etc / PKI / TLS / ใบรับรอง /ไดเรกทอรี

หวังว่านี่จะช่วยได้!


0

หลังจากค้นคว้าสักสองสามครั้งฉันก็สามารถทำงานได้และคำตอบก็คือค่อนข้างง่าย ทำตามขั้นตอน

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 sudo wget http://curl.haxx.se/ca/cacert.pem 

ขั้นตอนที่ 3 จะดาวน์โหลดไฟล์ pem ในโฟลเดอร์certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc เป็นไฟล์ที่ซ่อน ตรวจสอบโดย ctrl + h ในไดเรกทอรีบ้าน ถ้าไม่มีแล้วในประเภทอาคาร

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

NB ที่ นี่ฉันใช้ตัวแก้ไขนาโน แต่คุณสามารถใช้ตัวแก้ไขใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.