คู่มือการกำหนดค่า SSL, TLS และ Proxy ของ curl

การกำหนดค่าใบรับรอง HTTPS, เวอร์ชัน TLS, พร็อกซี และการแก้ไข DNS แบบกำหนดเองใน curl เป็นสิ่งจำเป็นสำหรับการสื่อสาร API ที่ปลอดภัย, CI/CD pipelines และการดีบักปัญหาเครือข่าย คู่มือนี้ครอบคลุมทุกแฟล็ก SSL, TLS, พร็อกซี และเครือข่าย — ตั้งแต่การปิดการตรวจสอบใบรับรองด้วย -k สำหรับการพัฒนาในเครื่องไปจนถึงการตั้งค่า mutual TLS ด้วย --cert และการส่งทราฟฟิกผ่านพร็อกซี SOCKS5 แต่ละตัวเลือกมีคำอธิบายที่ชัดเจน ข้อพิจารณาด้านความปลอดภัย และตัวอย่างพร้อมคัดลอก

ตารางอ้างอิงแฟล็ก SSL และ Proxy ฉบับย่อ

-kSSL/TLS

อนุญาตการเชื่อมต่อที่ไม่ปลอดภัย — ข้ามการตรวจสอบ SSL ทั้งหมด

--cacertSSL/TLS

ตรวจสอบใบรับรองเซิร์ฟเวอร์เทียบกับชุด CA ที่ระบุ

--certSSL/TLS

ระบุใบรับรองไคลเอนต์สำหรับการยืนยันตัวตน mutual TLS

--keySSL/TLS

ระบุไฟล์คีย์ส่วนตัวสำหรับใบรับรองไคลเอนต์

--tlsv1.2SSL/TLS

ใช้ TLS เวอร์ชัน 1.2 หรือสูงกว่าสำหรับการเชื่อมต่อ

--tlsv1.3SSL/TLS

ใช้ TLS เวอร์ชัน 1.3 หรือสูงกว่าสำหรับการเชื่อมต่อ

--ssl-reqdSSL/TLS

ต้องการ SSL/TLS สำหรับการเชื่อมต่อ (ล้มเหลวหากไม่พร้อมใช้งาน)

--ciphersSSL/TLS

ระบุชุดรหัส SSL ที่จะใช้สำหรับการเชื่อมต่อ

--cert-typeSSL/TLS

ระบุประเภทใบรับรองไคลเอนต์ (PEM, DER, ENG, P12)

--pinnedpubkeySSL/TLS

ปักหมุดและตรวจสอบ public key ของเซิร์ฟเวอร์ (แบบ HPKP)

-xProxy

ส่งทราฟฟิกทั้งหมดผ่านเซิร์ฟเวอร์พร็อกซีที่ระบุ

ส่งการเชื่อมต่อผ่านพร็อกซี SOCKS5

ระบุชื่อผู้ใช้:รหัสผ่านสำหรับเซิร์ฟเวอร์พร็อกซี

รายการโฮสต์ที่ไม่ควรผ่านพร็อกซี

--socks5-hostnameProxy

พร็อกซี SOCKS5 พร้อมการแก้ไข DNS ผ่านพร็อกซี

--proxy-cacertProxy

ใบรับรอง CA เพื่อตรวจสอบพร็อกซี HTTPS เอง

--resolveเครือข่าย

แมปคู่โฮสต์:พอร์ตที่ระบุเป็น IP address แบบกำหนดเอง

--connect-toเครือข่าย

เชื่อมต่อกับโฮสต์:พอร์ตที่แตกต่างจากที่ URL ระบุ

--local-portเครือข่าย

ตั้งค่าหมายเลขพอร์ตในเครื่องหรือช่วงสำหรับการเชื่อมต่อ

--interfaceเครือข่าย

ผูกการเชื่อมต่อกับอินเทอร์เฟซเครือข่ายที่ระบุ

--dns-serversเครือข่าย

ใช้เซิร์ฟเวอร์ DNS แบบกำหนดเองแทนค่าเริ่มต้นของระบบ (c-ares)

curl -k: ไม่สนใจข้อผิดพลาดใบรับรอง SSL

ทำหน้าที่อะไร
แฟล็ก -k (หรือ --insecure) ปิดการตรวจสอบใบรับรอง SSL/TLS ทั้งหมด curl จะไม่ตรวจสอบว่าใบรับรองเซิร์ฟเวอร์ลงนามโดย CA ที่เชื่อถือได้หรือไม่ ชื่อโฮสต์ตรงกันหรือไม่ หรือใบรับรองหมดอายุหรือไม่
เมื่อไหร่ควรใช้
ใช้เฉพาะสำหรับการพัฒนาในเครื่องที่มีใบรับรองที่ลงนามเองหรือสภาพแวดล้อมทดสอบ สำหรับ staging/production ใช้ --cacert พร้อมใบรับรอง CA จริงแทน — ทั้งปลอดภัยกว่าและชัดเจนกว่า
$ curl -k https://localhost:8443/api/health

อย่าใช้ -k ในสคริปต์ production หรือ CI/CD pipelines เด็ดขาด มันปิดการตรวจสอบใบรับรองทั้งหมด ทำให้การเชื่อมต่อของคุณเสี่ยงต่อการโจมตีแบบ man-in-the-middle ใช้ --cacert เพื่อเชื่อถือ CA เฉพาะแทน

curl --cacert: ใช้ใบรับรอง CA แบบกำหนดเอง

ทำหน้าที่อะไร
แฟล็ก --cacert บอกให้ curl ตรวจสอบใบรับรอง SSL ของเซิร์ฟเวอร์เทียบกับไฟล์ชุด CA (Certificate Authority) ที่ระบุในรูปแบบ PEM แทนที่จะใช้ที่เก็บใบรับรองที่เชื่อถือได้ของระบบ
เมื่อไหร่ควรใช้
ใช้เมื่อเซิร์ฟเวอร์ของคุณใช้ใบรับรองที่ลงนามโดย CA ส่วนตัวหรือภายในที่ไม่อยู่ในที่เก็บใบรับรองที่เชื่อถือได้ของระบบ พบได้ทั่วไปในสภาพแวดล้อมองค์กร, คลัสเตอร์ Kubernetes และการตั้งค่า Docker ที่มี PKI ภายใน
$ curl --cacert /path/to/corporate-ca.pem https://internal-api.example.com/data

curl --cert: ใบรับรองไคลเอนต์ (Mutual TLS)

ทำหน้าที่อะไร
แฟล็ก --cert ระบุใบรับรองฝั่งไคลเอนต์สำหรับ mutual TLS (mTLS) ใน mTLS ทั้งเซิร์ฟเวอร์และไคลเอนต์นำเสนอใบรับรองเพื่อตรวจสอบตัวตนซึ่งกันและกัน ไฟล์ใบรับรองควรอยู่ในรูปแบบ PEM หรือ PKCS#12
เมื่อไหร่ควรใช้
จำเป็นเมื่อเซิร์ฟเวอร์ต้องการการยืนยันตัวตนด้วยใบรับรองไคลเอนต์ — พบได้ทั่วไปใน API ธนาคาร, บริการภาครัฐ, การสื่อสารอุปกรณ์ IoT และสถาปัตยกรรม zero-trust ควรใช้ร่วมกับ --key เสมอเว้นแต่คีย์จะฝังอยู่ในไฟล์ใบรับรอง
$ curl --cert client.pem --key client-key.pem https://mtls-api.example.com/secure

curl --key: คีย์ส่วนตัวของใบรับรองไคลเอนต์

ทำหน้าที่อะไร
แฟล็ก --key ระบุไฟล์คีย์ส่วนตัวที่จับคู่กับใบรับรองไคลเอนต์ที่ระบุโดย --cert คีย์ต้องตรงกับใบรับรอง หากคีย์ได้รับการป้องกันด้วยรหัสผ่าน curl จะถามรหัสผ่าน (หรือใช้ --pass)
เมื่อไหร่ควรใช้
ใช้ร่วมกับ --cert เสมอ หากคีย์ส่วนตัวฝังอยู่ในไฟล์ใบรับรองแล้ว (พบได้ทั่วไปกับไฟล์ PKCS#12 / .p12) คุณสามารถไม่ใส่ --key ได้
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/secure

curl --tlsv1.2: บังคับใช้ TLS 1.2 ขั้นต่ำ

ทำหน้าที่อะไร
แฟล็ก --tlsv1.2 บังคับให้ curl ใช้ TLS 1.2 เป็นเวอร์ชันต่ำสุดที่ยอมรับได้สำหรับการจับมือ SSL/TLS โปรโตคอลเก่ากว่า (TLS 1.0, 1.1, SSLv3) จะถูกปฏิเสธ
เมื่อไหร่ควรใช้
ใช้เพื่อบังคับมาตรฐานความปลอดภัยขั้นต่ำ TLS 1.2 จำเป็นสำหรับการปฏิบัติตาม PCI-DSS และรองรับโดยเซิร์ฟเวอร์ทุกตัวในปัจจุบัน curl เวอร์ชันใหม่ส่วนใหญ่ใช้ TLS 1.2+ เป็นค่าเริ่มต้นอยู่แล้ว แต่แฟล็กนี้ทำให้ชัดเจน
$ curl --tlsv1.2 -v https://secure.example.com/api 2>&1 | grep 'SSL connection'

curl --tlsv1.3: บังคับใช้ TLS 1.3 ขั้นต่ำ

ทำหน้าที่อะไร
แฟล็ก --tlsv1.3 บังคับให้ curl ใช้ TLS 1.3 — เวอร์ชัน TLS ที่เร็วที่สุดและปลอดภัยที่สุด TLS 1.3 ลดการ round-trip เพิ่มเติมในการจับมือ (รองรับ 0-RTT) และลบชุดรหัสที่ล้าสมัยทั้งหมด
เมื่อไหร่ควรใช้
ใช้เมื่อคุณรู้ว่าเซิร์ฟเวอร์รองรับ TLS 1.3 และคุณต้องการประสิทธิภาพและความปลอดภัยที่ดีที่สุด หมายเหตุ: TLS 1.3 ต้องการ OpenSSL 1.1.1+ หรือไลบรารี TLS ที่เข้ากันได้ ไม่ใช่ทุกเซิร์ฟเวอร์จะรองรับ
$ curl --tlsv1.3 https://modern-api.example.com/data

ตัวเลือก SSL/TLS เพิ่มเติม

--ssl-reqd

ต้องการ SSL/TLS สำหรับการเชื่อมต่อ (ล้มเหลวหากไม่พร้อมใช้งาน)

--ciphers

ระบุชุดรหัส SSL ที่จะใช้สำหรับการเชื่อมต่อ

--cert-type

ระบุประเภทใบรับรองไคลเอนต์ (PEM, DER, ENG, P12)

--pinnedpubkey

ปักหมุดและตรวจสอบ public key ของเซิร์ฟเวอร์ (แบบ HPKP)

curl -x: ใช้พร็อกซี HTTP/HTTPS

ทำหน้าที่อะไร
แฟล็ก -x (หรือ --proxy) ส่งทราฟฟิก curl ทั้งหมดผ่านเซิร์ฟเวอร์พร็อกซีที่ระบุ รูปแบบคือ [protocol://]host[:port] โปรโตคอลพร็อกซีที่รองรับ: HTTP, HTTPS, SOCKS4, SOCKS5
เมื่อไหร่ควรใช้
ใช้สำหรับเซิร์ฟเวอร์พร็อกซีขององค์กร การดีบักด้วยเครื่องมือเช่น Fiddler, Charles หรือ mitmproxy การทดสอบข้อจำกัดทางภูมิศาสตร์ หรือเมื่อไม่สามารถเข้าถึงอินเทอร์เน็ตโดยตรง คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อม http_proxy / https_proxy แทนได้
$ curl -x http://proxy.example.com:8080 https://api.example.com/data

curl --socks5: ใช้พร็อกซี SOCKS5

ทำหน้าที่อะไร
แฟล็ก --socks5 บอกให้ curl ใช้พร็อกซี SOCKS5 สำหรับการเชื่อมต่อ TCP ต่างจากพร็อกซี HTTP ที่ SOCKS5 ทำงานที่ระดับ TCP และสามารถจัดการโปรโตคอลใด ๆ ได้ — ไม่ใช่แค่ HTTP การแก้ไข DNS จะทำในเครื่องเป็นค่าเริ่มต้น; ใช้ --socks5-hostname เพื่อแก้ไข DNS ผ่านพร็อกซี
เมื่อไหร่ควรใช้
ใช้สำหรับ SSH tunnel (ssh -D), การเข้าถึงเครือข่าย Tor หรือเมื่อพร็อกซีต้องจัดการโปรโตคอลที่ไม่ใช่ HTTP SOCKS5 รองรับ UDP และสามารถจัดการ DNS ได้ตามต้องการ — ทำให้มีความยืดหยุ่นมากกว่าพร็อกซี HTTP
$ curl --socks5 localhost:1080 https://api.example.com/data

curl --proxy-user: การยืนยันตัวตนพร็อกซี

ทำหน้าที่อะไร
แฟล็ก --proxy-user (หรือ -U) ส่งข้อมูลประจำตัวการยืนยันตัวตนไปยังเซิร์ฟเวอร์พร็อกซี รูปแบบคือ user:password นี่เป็นการแยกจากการยืนยันตัวตนกับเซิร์ฟเวอร์ (-u)
เมื่อไหร่ควรใช้
จำเป็นเมื่อเซิร์ฟเวอร์พร็อกซีต้องการการยืนยันตัวตน — พบได้ทั่วไปในสภาพแวดล้อมเครือข่ายองค์กร ข้อมูลประจำตัวจะถูกส่งไปยังพร็อกซี ไม่ใช่ไปยังเซิร์ฟเวอร์เป้าหมาย
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/data

curl --noproxy: ข้ามพร็อกซีสำหรับโฮสต์ที่ระบุ

ทำหน้าที่อะไร
แฟล็ก --noproxy ระบุรายการโฮสต์ โดเมน หรือ IP address ที่คั่นด้วยจุลภาคที่ควรข้ามพร็อกซีและเชื่อมต่อโดยตรง รองรับ wildcard: *.example.com ตรงกับทุกซับโดเมน
เมื่อไหร่ควรใช้
ใช้เพื่อยกเว้น localhost, บริการภายใน หรือโดเมนที่ระบุจากการใช้พร็อกซี สิ่งนี้สำคัญเมื่อพร็อกซีถูกตั้งค่าแบบ global ผ่านตัวแปรสภาพแวดล้อมแต่บางโฮสต์ (เช่น บริการในเครื่อง) ต้องการการเข้าถึงโดยตรง ใช้ * เพื่อข้ามพร็อกซีสำหรับทุกโฮสต์
$ curl -x http://proxy:8080 --noproxy "localhost,127.0.0.1,*.internal.com" https://localhost:3000/api

ตัวเลือกพร็อกซีเพิ่มเติม

--socks5-hostname

พร็อกซี SOCKS5 พร้อมการแก้ไข DNS ผ่านพร็อกซี

--proxy-cacert

ใบรับรอง CA เพื่อตรวจสอบพร็อกซี HTTPS เอง

curl --resolve: การแก้ไข DNS แบบกำหนดเอง

ทำหน้าที่อะไร
แฟล็ก --resolve ระบุ IP address แบบกำหนดเองสำหรับคู่ host:port ที่ระบุ ข้ามการค้นหา DNS โดยสิ้นเชิง รูปแบบคือ host:port:address สามารถระบุ --resolve ได้หลายรายการ
เมื่อไหร่ควรใช้
จำเป็นสำหรับการทดสอบก่อนที่ DNS จะแพร่กระจาย การตรวจสอบ backend ที่เจาะจงหลัง load balancer หรือการพัฒนาในเครื่องที่คุณต้องการชื่อโฮสต์จริงสำหรับการตรวจสอบใบรับรอง SSL ต่างจากการแก้ไข /etc/hosts ตรงที่เป็นแบบต่อคำขอและเฉพาะพอร์ต
$ curl --resolve api.example.com:443:127.0.0.1 https://api.example.com/health

curl --connect-to: เปลี่ยนเส้นทางการเชื่อมต่อไปยังโฮสต์อื่น

ทำหน้าที่อะไร
แฟล็ก --connect-to เปลี่ยนเส้นทางการเชื่อมต่อ TCP ไปยังคู่ host:port อื่นในขณะที่เก็บ URL เดิมสำหรับคำขอ HTTP (รวมถึงเฮดเดอร์ Host และ SNI) รูปแบบ: HOST1:PORT1:HOST2:PORT2
เมื่อไหร่ควรใช้
ใช้เพื่อทดสอบเซิร์ฟเวอร์ backend ที่เจาะจงหลัง load balancer โดยไม่ต้องแก้ไข DNS หรือ /etc/hosts ต่างจาก --resolve ตรงที่แมปโฮสต์:พอร์ตไปยังโฮสต์:พอร์ต (ไม่ใช่ไปยัง IP) ซึ่งมีประโยชน์เมื่อเป้าหมายมีชื่อโฮสต์ด้วย
$ curl --connect-to api.example.com:443:backend1.internal:8443 https://api.example.com/health

ตัวเลือกเครือข่ายเพิ่มเติม

--local-port

ตั้งค่าหมายเลขพอร์ตในเครื่องหรือช่วงสำหรับการเชื่อมต่อ

--interface

ผูกการเชื่อมต่อกับอินเทอร์เฟซเครือข่ายที่ระบุ

--dns-servers

ใช้เซิร์ฟเวอร์ DNS แบบกำหนดเองแทนค่าเริ่มต้นของระบบ (c-ares)

สถานการณ์ SSL และ Proxy ในโลกจริง

ตัวอย่างเหล่านี้ใช้แฟล็กหลายตัวร่วมกันเพื่อจัดการงานความปลอดภัยและเครือข่ายทั่วไปในสภาพแวดล้อมการพัฒนา CI/CD และ production

ทดสอบ HTTPS บน localhost

เมื่อพัฒนาในเครื่องด้วยใบรับรองที่ลงนามเอง ใช้ --resolve ร่วมกับ --cacert (หรือ -k สำหรับการทดสอบอย่างรวดเร็ว) สิ่งนี้ช่วยให้คุณใช้ชื่อโฮสต์จริงสำหรับ SSL/SNI ที่ถูกต้องโดยไม่ต้องแก้ไขไฟล์ hosts

$ curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/api/status

Mutual TLS (การยืนยันตัวตนด้วยใบรับรองไคลเอนต์)

API บางตัวต้องการให้ทั้งเซิร์ฟเวอร์และไคลเอนต์นำเสนอใบรับรอง ระบุ --cert, --key และ --cacert เพื่อสร้างการเชื่อมต่อ TLS สองทางที่ตรวจสอบอย่างสมบูรณ์

$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://mtls-api.example.com/data

พร็อกซีองค์กรพร้อมการยืนยันตัวตน

ในเครือข่ายองค์กรที่มีเซิร์ฟเวอร์พร็อกซีบังคับ ใช้ -x ร่วมกับ -U สำหรับข้อมูลประจำตัวพร็อกซี เพิ่ม --noproxy เพื่อยกเว้นบริการภายในจากการใช้พร็อกซี

$ curl -x http://proxy.corp.com:3128 -U user:pass --noproxy "*.internal.corp" https://external-api.com/data

Docker Container ที่มี CA ภายใน

เมื่อบริการใน Docker ใช้ใบรับรองจาก CA ภายใน ให้ mount ใบรับรอง CA เข้าไปใน container และอ้างอิงด้วย --cacert สิ่งนี้ปลอดภัยกว่า -k เพราะยังคงตรวจสอบ certificate chain

$ curl --cacert /etc/ssl/certs/internal-ca.crt https://service.docker.internal:8443/health

พร็อกซี SOCKS5 ผ่าน SSH Tunnel

สร้างพร็อกซี SOCKS5 ด้วย ssh -D และส่งทราฟฟิก curl ผ่านด้วย --socks5 สิ่งนี้มีประโยชน์สำหรับการเข้าถึงบริการภายในผ่าน bastion host

$ curl --socks5 localhost:1080 https://internal-api.example.com/status

คำถามที่พบบ่อยเกี่ยวกับ curl SSL และ Proxy

ฉันจะข้ามการตรวจสอบใบรับรอง SSL ใน curl ได้อย่างไร?

ใช้ curl -k URL หรือ curl --insecure URL สิ่งนี้ปิดการตรวจสอบใบรับรองทั้งหมด — การหมดอายุ ชื่อโฮสต์ไม่ตรง CA ที่ไม่น่าเชื่อถือ ใช้เฉพาะสำหรับการพัฒนาในเครื่อง สำหรับ production ใช้ --cacert พร้อมใบรับรอง CA จริง

ฉันจะทำให้ curl เชื่อถือใบรับรองที่ลงนามเองได้อย่างไร?

ใช้ curl --cacert /path/to/ca.pem URL เพื่อระบุใบรับรอง CA ที่ลงนามใบรับรองที่ลงนามเองของคุณ สิ่งนี้ปลอดภัยกว่า -k เพราะยังคงตรวจสอบ certificate chain — เชื่อถือเฉพาะ CA ที่คุณระบุเท่านั้น

ฉันจะตรวจสอบว่า curl ใช้ TLS เวอร์ชันใดได้อย่างไร?

รัน curl -v URL และมองหาบรรทัด * SSL connection using TLSv1.x / CipherSuite ในผลลัพธ์แบบละเอียด เพื่อบังคับเวอร์ชันที่ระบุ ใช้ --tlsv1.2 หรือ --tlsv1.3

mutual TLS (mTLS) คืออะไร และฉันจะใช้กับ curl ได้อย่างไร?

mutual TLS ต้องการให้ทั้งเซิร์ฟเวอร์และไคลเอนต์นำเสนอใบรับรอง ใช้: curl --cert client.pem --key client-key.pem --cacert server-ca.pem URL คู่ --cert/--key ยืนยันตัวตนไคลเอนต์; --cacert ตรวจสอบเซิร์ฟเวอร์

ฉันจะใช้ curl ผ่านพร็อกซี HTTP ได้อย่างไร?

ใช้ curl -x http://proxy:port URL สำหรับพร็อกซี HTTPS: curl -x https://proxy:port URL หรือตั้งค่าตัวแปรสภาพแวดล้อม http_proxy และ https_proxy — curl จะใช้โดยอัตโนมัติ

ฉันจะใช้ curl กับพร็อกซี SOCKS5 ได้อย่างไร?

ใช้ curl --socks5 host:port URL สำหรับการแก้ไข DNS ในเครื่อง หรือ curl --socks5-hostname host:port URL เพื่อแก้ไข DNS ผ่านพร็อกซี (สำคัญสำหรับความเป็นส่วนตัว/Tor) ตัวอย่างกับ SSH tunnel: ssh -D 1080 user@bastion จากนั้น curl --socks5 localhost:1080 URL

ฉันจะยืนยันตัวตนกับเซิร์ฟเวอร์พร็อกซีใน curl ได้อย่างไร?

ใช้ curl -x http://proxy:port -U user:password URL แฟล็ก -U (หรือ --proxy-user) ส่งข้อมูลประจำตัวไปยังพร็อกซี นี่เป็นการแยกจาก -u ซึ่งยืนยันตัวตนกับเซิร์ฟเวอร์เป้าหมาย

ฉันจะยกเว้นโฮสต์บางตัวจากพร็อกซีใน curl ได้อย่างไร?

ใช้ --noproxy "localhost,127.0.0.1,*.internal.com" หรือตั้งค่าตัวแปรสภาพแวดล้อม NO_PROXY รองรับ wildcard (*.example.com) ใช้ --noproxy "*" เพื่อข้ามพร็อกซีทั้งหมดสำหรับคำขอเดียว

ฉันจะทดสอบ HTTPS บน localhost ด้วย curl ได้อย่างไร?

สำหรับการทดสอบอย่างรวดเร็ว: curl -k https://localhost:8443/ สำหรับการตรวจสอบที่ถูกต้อง: curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/ วิธี --resolve ช่วยให้ชื่อโฮสต์ของใบรับรองตรงกันอย่างถูกต้อง

ฉันจะแทนที่การแก้ไข DNS สำหรับโฮสต์ที่ระบุใน curl ได้อย่างไร?

ใช้ curl --resolve host:port:IP URL ตัวอย่าง: curl --resolve api.example.com:443:192.168.1.100 https://api.example.com/ สิ่งนี้ข้าม DNS สำหรับคู่โฮสต์:พอร์ตนั้นเท่านั้น — ไม่จำเป็นต้องแก้ไข /etc/hosts

ฉันจะแก้ไข 'SSL certificate problem: certificate has expired' ใน curl ได้อย่างไร?

ใบรับรองเซิร์ฟเวอร์หมดอายุแล้ว วิธีแก้ไข: (1) ต่ออายุใบรับรองบนเซิร์ฟเวอร์, (2) อัปเดตชุด CA ของคุณ: curl --cacert /path/to/updated-ca.pem URL, (3) สำหรับการทดสอบเท่านั้น: curl -k URL ตรวจสอบการหมดอายุ: curl -v URL 2>&1 | grep expire

การใช้ curl --insecure (-k) ใน production ปลอดภัยหรือไม่?

ไม่ แฟล็ก -k ปิดการตรวจสอบใบรับรองทั้งหมด — การหมดอายุ ชื่อโฮสต์ และ trust chain สิ่งนี้ทำให้การเชื่อมต่อของคุณเสี่ยงต่อการโจมตีแบบ man-in-the-middle ใช้ --cacert พร้อมใบรับรอง CA ที่ระบุเสมอใน production และ CI/CD pipelines