ฉันจะจัดการกับใบรับรองโดยใช้ cURL ขณะที่พยายามเข้าถึง url HTTPS ได้อย่างไร


188

ฉันได้รับข้อผิดพลาดต่อไปนี้โดยใช้ curl:

curl: (77) ข้อผิดพลาดการตั้งค่าใบรับรองการตรวจสอบตำแหน่ง:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: ไม่มี

ฉันจะตั้งค่าใบรับรองนี้เพื่อยืนยันที่ตั้งได้อย่างไร ขอบคุณ


2
คุณใช้ระบบปฏิบัติการอะไร / distro คุณควรติดตั้งแพ็คเกจใบรับรอง ca (นั่นคือสิ่งที่เรียกว่าบนเดเบียน / อูบุนตู)
igorw

40
สำหรับการอ้างอิงในอนาคตฉันได้ca-certificatesติดตั้งแล้วแต่ข้อผิดพลาดยังคงอยู่ ปัญหาคือใบรับรองของฉันตั้งอยู่/etc/ssl/certs/ca-certificates.crtแทนที่จะเป็น/etc/pki/tls/certs/ca-bundle.crtดังนั้นฉันจึงต้องตั้งค่าตัวแปรสภาพแวดล้อมCURL_CA_BUNDLEให้เป็นเส้นทางที่ถูกต้อง
Robert Smith

13
เย็น! export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtมันทำงานสำหรับฉันเมื่อฉันตั้ง
เป็นระเบียบเรียบร้อย

คำตอบ:


83

ข้อผิดพลาดนี้ที่เกี่ยวข้องกับการแพคเกจที่ขาดหายไปca-certificates : ติดตั้ง

ใน Ubuntu Linux (และ distro ที่คล้ายกัน):

# apt-get install ca-certificates

ใน CygWin ผ่านApt-Cyg

# apt-cyg install ca-certificates

ใน Arch Linux (Raspberry Pi)

# pacman -S ca-certificates

เอกสารบอกว่า:

แพ็คเกจนี้รวมถึงไฟล์ PEM ของใบรับรอง CA เพื่อให้แอปพลิเคชันที่ใช้ SSL ตรวจสอบความถูกต้องของการเชื่อมต่อ SSL

เท่าที่เห็นที่: Debian - รายละเอียดของแพคเกจใบรับรอง CA ในการบีบ


97
ใบรับรอง ca เป็นรุ่นใหม่ล่าสุดแล้ว แต่ฉันยังคงได้รับข้อผิดพลาด
บาทหลวงกระดูก

2
แน่นอนว่าคุณจะได้รับข้อผิดพลาดเดียวกันนี้ถ้าคุณพยายามติดตั้ง apt-CYG ผ่านทางวิธีที่แนะนำโดยใช้ขดและraw.github.com
10gistic

11
บน Arch Linux คุณอาจต้องpacman -S ca-certificates-utilsใช้ ฉันทำ.
Mark Grimes

8
แพ็คเกจนี้ได้รับการติดตั้งแล้ว คำตอบนี้ไม่เป็นประโยชน์
JimmyJames

9
@PastorBones ฉันมีปัญหาเดียวกันกับแพคเกจที่มีอยู่แล้วฉันคิดว่ามันได้รับความเสียหายดังนั้นจึงได้ทำการsudo apt install --reinstall ca-certificatesติดตั้งแพคเกจใหม่และแก้ไขข้อผิดพลาดที่ฉันเห็น
Will

153

ฉันยังได้ติดตั้งใบรับรอง ca รุ่นใหม่ล่าสุด แต่ยังได้รับข้อผิดพลาด:

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

ปัญหาก็คือว่าขดคาดว่าใบรับรองให้อยู่ในเส้นทางแต่ไม่สามารถหามันเพราะมันอยู่ในเส้นทาง/etc/pki/tls/certs/ca-bundle.crt/etc/ssl/certs/ca-certificates.crt

คัดลอกใบรับรองของฉันไปยังปลายทางที่คาดหวังด้วยการเรียกใช้

sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

ทำงานให้ฉัน คุณจะต้องสร้างโฟลเดอร์สำหรับปลายทางเป้าหมายหากไม่มีอยู่โดยการเรียกใช้

sudo mkdir -p /etc/pki/tls/certs

หากจำเป็นให้แก้ไขคำสั่งด้านบนเพื่อทำให้ชื่อไฟล์ปลายทางตรงกับเส้นทางที่คาดหวังโดย curl เช่นแทนที่/etc/pki/tls/certs/ca-bundle.crtด้วยพา ธ ที่ตามด้วย "CAfile:" ในข้อความแสดงข้อผิดพลาด


31
คุณสามารถสร้างลิงก์สัญลักษณ์ด้วยln -sหากไม่ต้องการคัดลอกลิงก์ใหม่ทุกครั้งที่คุณอัปเดต
starbeamrainbowlabs

4
พบปัญหาเดียวกันสำหรับrescuetimeแอพใน Fedora 25 sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crtแก้ไขปัญหาได้ ( CURL_CA_BUNDLEenv var ใช้งานไม่ได้)
GabLeRoux

บน Ubuntu sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.pemของฉันนี้แก้ไขปัญหา: จริง ๆ แล้วฉันได้รับThe repository ... does not have a Release fileซึ่งเกิดจากการขาดใบรับรอง ( Could not load certificates from ...)
Marinos

84

นำสิ่งนี้มาเป็นของคุณ .bashrc

# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

(ดูความคิดเห็นจากโรเบิร์ต)


8
ขอบคุณที่ให้วิธีการที่ไม่ต้องการให้ฉันลบล้างไฟล์ระบบด้วยมือ แต่ยังคงความปลอดภัยในการใช้ใบรับรอง!
สตีเฟ่นจอห์นสัน

ขอบคุณ. วิธีนี้แก้ไขปัญหาที่คล้ายกันของฉันกับ pyenv & curl ฉันใช้ Ubuntu 14.04 และติดตั้ง ca-certificate เรียบร้อยแล้ว
davidA

วิธีนี้ยังทำงานร่วมกับ xonsh (เพิ่ม$CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"ใน.xonshrc)
m00am

ในกรณี: ซับในรุ่นนี้:CURL_CA_BUNDLE=/path/to/bundle.crt curl http://example.com
jmathew

30

สร้างไฟล์ที่~/.curlrcมีเนื้อหาดังต่อไปนี้

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

1
คำตอบที่ดีที่สุดนี่ใช้ได้กับฉันใน Linux Mint 17
Santiago

สำหรับ Mac มันทำงานกับการติดตามใน~/.curlrc cacert=/etc/openssl/cert.pem
amirathi

21

วิธีที่เร็วที่สุดในการแก้ไขข้อผิดพลาดคือการเพิ่มตัวเลือก -k ไว้ในคำขอ curl ของคุณ ตัวเลือกนั้น "อนุญาตให้เชื่อมต่อกับ SSL ที่อ้างอิงโดยไม่มีใบรับรอง" (จากขด - ช่วยเหลือ)

โปรดทราบว่านี่อาจหมายความว่าคุณไม่ได้พูดคุยกับปลายทางที่คุณคิดว่าเป็นเพราะพวกเขากำลังแสดงใบรับรองที่ไม่ได้ลงนามโดย CA ที่คุณเชื่อถือ

ตัวอย่างเช่น:

$ curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg

ให้ฉันตอบสนองข้อผิดพลาดต่อไปนี้:

curl: (77) error setting certificate verify locations:
  CAfile: /usr/ssl/certs/ca-bundle.crt
  CApath: none

ฉันเพิ่มใน -k:

curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k

และไม่มีข้อผิดพลาด เป็นโบนัสตอนนี้ฉันได้ติดตั้งฉลาด - และใบรับรอง ca


10
อาจทำให้เกิดข้อผิดพลาด แต่ก็ทำให้การเชื่อมต่อ "ปลอดภัย" ไม่ปลอดภัย
ทิม

1
ไม่ได้จริงๆ เท่าที่ฉันรู้คุณไม่สามารถข้ามการเข้ารหัสของการเชื่อมต่อที่ปลอดภัยได้ดังนั้นจึงยังคงเข้ารหัสและไปที่จุดปลายเดียวเท่านั้น ใครบางคนแก้ไขฉันถ้าฉันผิด แต่ความเสี่ยงเดียวที่คุณหนีคือคุณอาจตกเป็นเหยื่อของการโจมตีจากคนตรงกลาง ยังไม่น่าจะมีความเสี่ยงหากคุณใช้การม้วนงอ
10gistic

18
ใช่จริงๆ. ตัวเลือก "-k" เป็นชวเลขสำหรับ "--insecure" หากคุณมีคนอยู่ตรงกลางคุณคิดว่าเขาทำอะไรกับข้อมูลของคุณ ผู้สปอยเลอร์แจ้งเตือน: เขาถอดรหัสถอดรหัสขโมยและอาจแก้ไขและฉีดกลับเข้าไปในสตรีมที่ไม่ปลอดภัย ส่งตรงจากหน้า man: "-k, --insecure (SSL) ตัวเลือกนี้อนุญาตให้ curl ทำการเชื่อมต่อและถ่ายโอน SSL" ไม่ปลอดภัย "การเชื่อมต่อ SSL ทั้งหมดจะพยายามทำให้ปลอดภัยโดยใช้ชุดใบรับรอง CA ที่ติดตั้งไว้ตามค่าเริ่มต้น สิ่งนี้ทำให้การเชื่อมต่อทั้งหมดถูกพิจารณาว่า "ไม่ปลอดภัย" ล้มเหลวเว้นแต่จะใช้ -k, --insecure
ทิม

2
หากคุณต้องการ SSL คุณต้องมีความเป็นส่วนตัวและการยืนยัน - การ-kตั้งค่าสถานะหมายความว่าคุณสูญเสียการยืนยัน อาจยอมรับได้ขึ้นอยู่กับความต้องการของคุณ MITM เป็นการโจมตีที่ไม่น่ารำคาญถ้าคุณคิดว่าเครือข่ายของคุณและเซิร์ฟเวอร์ที่คุณกำลังสื่อสารด้วยนั้นปลอดภัยจาก interlopers (คุณสามารถตั้งสมมติฐานได้ไหม ความเสี่ยงเพิ่มขึ้นตามประเภทของข้อมูลของคุณ (ซอร์สโค้ดและ certs มีความเสี่ยงมากกว่าภาพ) คุณสามารถตรวจสอบความถูกต้องของข้อมูลหลังจากการถ่ายโอน (checksums ฯลฯ ) แต่ตอนนี้คุณกำลังเปลี่ยนความเชื่อมั่นของคุณไปยังช่องทาง checksum ในท้ายที่สุด-kจะช่วยให้คุณทำงานได้มากขึ้น
Mark Fox

ดังนั้นหมายความว่าถ้าฉันใช้ใบรับรองที่ลงนามด้วยตนเอง ฉันควรจะใช้ตัวเลือก -k อาจจะไม่สามารถตรวจสอบใบรับรองที่ลงนามด้วยตนเองได้
Linus

15

@roens ถูกต้อง สิ่งนี้มีผลต่อผู้ใช้Anacondaทุกคนโดยมีข้อผิดพลาดด้านล่าง
curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none

วิธีแก้ปัญหาคือใช้ curl ของระบบที่เป็นค่าเริ่มต้นและหลีกเลี่ยงการยุ่งกับPATHตัวแปรAnaconda ที่เตรียมไว้ คุณสามารถ

  1. เปลี่ยนชื่อ Anaconda curl binary :)
    mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda

  2. หรือลบ Anaconda curl
    conda remove curl

$ which curl /usr/bin/curl

[0] Anaconda Ubuntu curl Github ปัญหา https://github.com/conda/conda-recipes/issues/352


หาดีฉันไม่ทราบว่า Anaconda กำลังขโมยความสำคัญของเส้นทางของฉัน มันทำงานเมื่อฉันแทนที่curlด้วยเส้นทางแบบเต็ม/usr/bin/curl
jxramos

สิ่งนี้ช่วยได้มาก! ขอบคุณ
Shababb Karim

12

จาก$ man curl:

--cert-type <type>
    (SSL) Tells curl what certificate type the provided  certificate
    is in. PEM, DER and ENG are recognized types.  If not specified,
    PEM is assumed.

    If this option is used several times, the last one will be used.

--cacert <CA certificate>
    (SSL) Tells curl to use the specified certificate file to verify
    the peer. The file may contain  multiple  CA  certificates.  The
    certificate(s)  must be in PEM format. Normally curl is built to
    use a default file for this, so this option is typically used to
    alter that default file.

7

สำหรับรหัส PHP ที่ทำงานบน XAMPP บน Windows ฉันพบว่าฉันต้องแก้ไข php.ini เพื่อรวมด้านล่าง

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt

จากนั้นคัดลอกไปที่ไฟล์https://curl.haxx.se/ca/cacert.pemและเปลี่ยนชื่อเป็น curl-ca-bundle.crt และวางไว้ใต้เส้นทาง \ xampp (ฉันไม่สามารถทำงาน curl.capath ได้) . ฉันยังพบ CAbundle บนไซต์ cURL ไม่เพียงพอสำหรับไซต์ระยะไกลที่ฉันเชื่อมต่อด้วยดังนั้นให้ใช้รายการที่แสดงรายการด้วย curl รุ่น 7.47.1 ใน Windows ที่รวบรวมไว้ล่วงหน้าที่http://winampplugins.co.uk / ขด /


บน windows คุณสามารถเพิ่ม "xampp" ก่อน php ดังนี้: curl.cainfo = "C: \ xampp \ php \ extras \ cacert.pem"
Ryan Steyn

7

ฉันมีปัญหาเดียวกันแน่นอน ตามที่ปรากฏ/etc/ssl/certs/ca-certificates.crtไฟล์ของฉันผิดรูปแบบ รายการสุดท้ายแสดงให้เห็นดังนี้:

-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----

หลังจากเพิ่มบรรทัดใหม่ก่อนหน้า-----END CERTIFICATE-----นี้ curl สามารถจัดการไฟล์ใบรับรองได้

นี่เป็นเรื่องที่น่ารำคาญมากเมื่อพบว่าupdate-ca-certificatesคำสั่งของฉันไม่ได้เตือนฉัน

สิ่งนี้อาจเป็นปัญหาของ Curl หรือไม่ก็ได้ดังนั้นนี่คือเวอร์ชั่นของฉันเพื่อความสมบูรณ์:

curl --version
# curl 7.51.0 (x86_64-alpine-linux-musl) libcurl/7.51.0 OpenSSL/1.0.2j zlib/1.2.8 libssh2/1.7.0
# Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
# Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

6

สิ่งนี้ใช้ได้สำหรับฉัน

sudo apt-get install ca-certificates

จากนั้นไปที่โฟลเดอร์ใบรับรองที่

sudo cd /etc/ssl/certs

จากนั้นคุณคัดลอกไฟล์ ca-certificate.crt ไปที่ /etc/pki/tls/certs

sudo cp ca-certificates.crt /etc/pki/tls/certs

หากไม่มีโฟลเดอร์ tls / certs ให้สร้างขึ้นใหม่และเปลี่ยนการอนุญาตโดยใช้ chmod 777 -R folderNAME


1
ฉันลองสิ่งนี้ แต่สิ่งนี้ไม่ได้ผลสำหรับฉันและฉันยังคงได้รับข้อผิดพลาดเดิม ความคิดใด ๆ
Anirudh

6

อีกทางเลือกหนึ่งในการแก้ไขปัญหานี้คือการปิดใช้งานการตรวจสอบใบรับรอง:

echo insecure >> ~/.curlrc

1
วิธีแก้ปัญหา แต่มันช่วยฉันหลังจากใช้เวลานานเกินไปด้วยใบรับรอง curl ขอบคุณ
K. Gol

4

curl ทำการSSLตรวจสอบใบรับรองโดยค่าเริ่มต้นโดยใช้ "มัด" ของCertificate Authority (CA)คีย์สาธารณะ (CA certs) บันเดิลเริ่มต้นมีชื่อว่า curl-ca-bundle.crt คุณสามารถระบุไฟล์สำรองโดยใช้ตัวเลือก --cacert

หากHTTPSเซิร์ฟเวอร์นี้ใช้ใบรับรองที่ลงนามโดย CA แสดงอยู่ในชุดการตรวจสอบใบรับรองอาจล้มเหลวเนื่องจากปัญหาเกี่ยวกับใบรับรอง (อาจหมดอายุหรือชื่ออาจไม่ตรงกับชื่อโดเมนใน URL)

หากคุณต้องการปิดการตรวจสอบใบรับรองของ curl ให้ใช้--insecureตัวเลือก-k (หรือ)

ตัวอย่างเช่น

curl --insecure http://........

3
นอกเหนือจากที่ "การเชื่อถือแหล่งที่มา" นั้นไม่เกี่ยวข้องกับที่นี่เนื่องจากไม่มีการตรวจสอบใบรับรองกับ CA อย่างถูกต้องคุณไม่มีความคิดว่าใครเป็น "แหล่งที่มา"
Jeff Allen

4

ดูเหมือนว่า curl ของคุณจะชี้ไปที่ไฟล์ที่ไม่มีอยู่ด้วย CA certs หรือไฟล์ที่คล้ายคลึง

สำหรับการอ้างอิงหลักเกี่ยวกับ CA certs ด้วย curl ให้ดู: https://curl.haxx.se/docs/sslcerts.html


3

เพียงสร้างโฟลเดอร์ที่หายไปในระบบของคุณ ..

/ etc / PKI / TLS / ใบรับรอง /

และสร้างไฟล์โดยใช้คำสั่งต่อไปนี้

sudo apt-get install ca-certificate

แล้วคัดลอกและวางใบรับรองไปยังโฟลเดอร์ปลายทางซึ่งแสดงในข้อผิดพลาดของคุณ .. ของฉันคือ " with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in" ตรวจสอบให้แน่ใจว่าคุณวางไฟล์ไปยังตำแหน่งที่แน่นอนที่กล่าวถึงในข้อผิดพลาด ใช้คำสั่งต่อไปนี้เพื่อคัดลอกวาง ..

sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

แก้ไขแล้ว.


ไม่มีคำตอบยอดนิยมสำหรับฉัน แต่สิ่งนี้ทำ!
Prachiti Prakash Prabhu

2

สำหรับสิ่งที่คุ้มค่าการตรวจสอบwhich curlกำลังทำงานก็มีความสำคัญเช่นกัน

ผู้ใช้บนเครื่องที่ใช้ร่วมกันที่ฉันดูแลได้รับข้อผิดพลาดนี้ แต่สาเหตุกลับเป็นเพราะพวกเขาต้องการติดตั้ง Anaconda ( http://continuum.io ) การทำเช่นนี้วางเส้นทางไบนารีงูก่อนที่มาตรฐาน$PATHและมันมาพร้อมกับของตัวเองcurlไบนารีที่มีปัญหาในการหาใบรับรองเริ่มต้นที่ถูกติดตั้งบนเครื่อง Ubuntu นี้


1
ฉันขอแนะนำให้ตรวจสอบwhich -a curlเพื่อดูทุกสิ่งที่มีอยู่และแน่นอนว่าสิ่งใดที่อยู่ด้านบน
jxramos

2

หากใครยังมีปัญหาลองสิ่งนี้มันก็ใช้ได้กับฉัน ลบไฟล์ใน/etc/ssl/certs/ไดเรกทอรีของคุณแล้วติดตั้งใบรับรอง ca:

sudo apt install ca-certificates --reinstall

ทำสิ่งนี้เมื่อฉันพยายามติดตั้ง Linuxbrew


1
สิ่งนี้ช่วยฉันได้ แต่ฉันไม่ได้ลบไฟล์ในเครื่อง เพิ่งรันคำสั่งง่าย ๆ และเริ่มทำงาน
Josefhu15

1

หากคุณใช้ homebrew บน macOS หรือ linuxbrew ใน linux ให้ลองติดตั้งใหม่opensslและcurlทำตามขั้นตอนต่อไปนี้จากหน้านี้

ข้อความแสดงข้อผิดพลาดนี้ระบุว่า curl ไม่สามารถสร้างการเชื่อมต่อที่ปลอดภัยโดยใช้ openssl การติดตั้ง openssl ใหม่ควรแก้ไขปัญหา หากต้องการใช้การเชื่อมต่อที่ไม่ปลอดภัยสำหรับทั้ง curl และ git เพื่อดาวน์โหลดไฟล์ที่จำเป็นให้เรียกใช้:

echo insecure >> ~/.curlrc
git config --global http.sslVerify false

จากนั้นติดตั้งหรือติดตั้ง openssl และ curl ใหม่:

HOMEBREW_CURLRC=1 brew reinstall openssl curl

สุดท้ายเลิกทำการเปลี่ยนแปลงความปลอดภัยเพื่อให้ curl และ git ใช้การเชื่อมต่อที่ปลอดภัยอีกครั้ง:

sed -i '/^insecure$/d' ~/.curlrc
git config --global http.sslVerify true

คุณอาจต้องเริ่มต้นเซสชันเชลล์ใหม่เพื่อตรวจสอบผลลัพธ์ด้วย

curl -v https://github.com # or any other https urls.

ถ้ามันแสดงผลลัพธ์ต่อไปนี้ในผลลัพธ์ปัญหาควรได้รับการแก้ไข!

* successfully set certificate verify locations:
*   CAfile: /usr/local/etc/openssl/cert.pem
    CApath: /usr/local/etc/openssl/certs

อ้างอิง:


หลังจากชั่วโมงแห่งความพยายาม สิ่งนี้ช่วยฉัน ทางออกที่เหมาะสมสำหรับ Macos ในที่สุด ขอบคุณมาก! :)
mrateb

1

ฉันมีปัญหาเดียวกัน: ฉันกำลังสร้างอิมเมจนักเทียบท่าที่ใช้อัลไพน์และเมื่อฉันต้องการขดเว็บไซต์ขององค์กรของฉันข้อผิดพลาดนี้จะปรากฏขึ้น ในการแก้ปัญหานั้นฉันต้องได้รับใบรับรอง CA ของ บริษัท ของฉันจากนั้นฉันต้องเพิ่มลงในภาพ CA certs ของฉัน

รับใบรับรอง CA

ใช้ OpenSSL เพื่อรับใบรับรองที่เกี่ยวข้องกับเว็บไซต์:

openssl s_client -showcerts -servername my.company.website.org -connect my.company.website.org:443

สิ่งนี้จะให้ผลลัพธ์เช่น:

CONNECTED(00000005)
depth=2 CN = UbisoftRootCA
verify error:num=19:self signed certificate in certificate chain
...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... 
-----END CERTIFICATE-----
...

รับใบรับรองล่าสุด (เนื้อหาระหว่าง-----BEGIN CERTIFICATE-----และ
-----END CERTIFICATE-----รวมมาร์กอัป) และบันทึกลงในไฟล์ (ตัวอย่างเช่น mycompanyRootCA.crt)

สร้างภาพของคุณ

จากนั้นเมื่อคุณสร้างภาพนักเทียบท่าจากเทือกเขาแอลป์ให้ทำดังนี้:

FROM alpine
RUN apk add ca-certificates curl
COPY mycompanyRootCA.crt  /usr/local/share/ca-certificates/mycompanyRootCA.crt
RUN update-ca-certificates

ภาพของคุณจะทำงานอย่างถูกต้อง! \ O /



0

ข้อผิดพลาดเกิดจากไฟล์ใบรับรองเชน SSL เสียหายหรือขาดหายไปในไดเรกทอรี PKI คุณจะต้องตรวจสอบให้แน่ใจว่าไฟล์ ca-bundle ทำตามขั้นตอนต่อไปนี้: ในคอนโซล / เทอร์มินัล:

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

เข้าสู่ไซต์นี้: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificatesรับ ca-certificate ของคุณสำหรับ SO คัดลอก url ของการดาวน์โหลดและวาง url: wget your_url_donwload_ca-ceritificated.rpm ตอนนี้ติดตั้ง yout rpm:

rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv

ตอนนี้เริ่มบริการของคุณ: ตัวอย่างของฉันคำสั่งนี้:

sudo service2 httpd restart

0

เรียกใช้คำสั่งต่อไปนี้ใน git bash ที่ทำงานได้ดีสำหรับฉัน

git config --global http.sslverify "false"


0

ฉันพบว่าการแก้ไขนี้เป็นวิธีที่ง่ายและปลอดภัย มันเกี่ยวข้องกับการเปลี่ยนเส้นทางของสองค่าในphp.iniไฟล์ ทำตามคำแนะนำที่นี่: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificate


0

ร้องอธิบายขั้นตอนในการแก้ไขปัญหา
1. ค้นหาไฟล์ที่มีอยู่ใน define url
2. ถ้าไม่ดาวน์โหลดไฟล์จาก url https://curl.haxx.se/ca/cacert.pem
3. คัดลอกและทำลายไฟล์ลงในพา ธ ที่กำหนดในไฟล์ php.ini
4. เริ่มบริการ apache ใหม่


0

ฉันมีปัญหานี้และปรากฏว่าเวอร์ชันของ CURL ของฉันไม่สามารถแยกใบรับรองที่เข้ารหัส DER (และไม่ได้ให้ความสนใจกับตัวเลือก - ประเภทใบรับรองด้วย) เมื่อฉันแปลงใบรับรองเป็นรูปแบบ PEM มันใช้งานได้


0

ในกรณีของฉัน/etc/ssl/certs/ca-certificates.crtไฟล์หายไป ตามที่ปรากฏออกมาฉันได้ลบเนื้อหาของ/etc/ssl/certsจากภายใน Dockerfile เมื่อสร้างภาพนักเทียบท่า หลังจากปรับคำสั่ง shell script / bash ของฉันแล้วเรียกใช้จากภายใน Dockerfile - curl ทำงานได้อย่างสมบูรณ์แบบจากภายในคอนเทนเนอร์ใหม่

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