คู่มือการกำหนดค่า SSL, TLS และ Proxy ของ curl
การกำหนดค่าใบรับรอง HTTPS, เวอร์ชัน TLS, พร็อกซี และการแก้ไข DNS แบบกำหนดเองใน curl เป็นสิ่งจำเป็นสำหรับการสื่อสาร API ที่ปลอดภัย, CI/CD pipelines และการดีบักปัญหาเครือข่าย คู่มือนี้ครอบคลุมทุกแฟล็ก SSL, TLS, พร็อกซี และเครือข่าย — ตั้งแต่การปิดการตรวจสอบใบรับรองด้วย -k สำหรับการพัฒนาในเครื่องไปจนถึงการตั้งค่า mutual TLS ด้วย --cert และการส่งทราฟฟิกผ่านพร็อกซี SOCKS5 แต่ละตัวเลือกมีคำอธิบายที่ชัดเจน ข้อพิจารณาด้านความปลอดภัย และตัวอย่างพร้อมคัดลอก
ตารางอ้างอิงแฟล็ก SSL และ Proxy ฉบับย่อ
อนุญาตการเชื่อมต่อที่ไม่ปลอดภัย — ข้ามการตรวจสอบ SSL ทั้งหมด
ตรวจสอบใบรับรองเซิร์ฟเวอร์เทียบกับชุด CA ที่ระบุ
ระบุใบรับรองไคลเอนต์สำหรับการยืนยันตัวตน mutual TLS
ระบุไฟล์คีย์ส่วนตัวสำหรับใบรับรองไคลเอนต์
ใช้ TLS เวอร์ชัน 1.2 หรือสูงกว่าสำหรับการเชื่อมต่อ
ใช้ TLS เวอร์ชัน 1.3 หรือสูงกว่าสำหรับการเชื่อมต่อ
ต้องการ SSL/TLS สำหรับการเชื่อมต่อ (ล้มเหลวหากไม่พร้อมใช้งาน)
ระบุชุดรหัส SSL ที่จะใช้สำหรับการเชื่อมต่อ
ระบุประเภทใบรับรองไคลเอนต์ (PEM, DER, ENG, P12)
ปักหมุดและตรวจสอบ public key ของเซิร์ฟเวอร์ (แบบ HPKP)
ส่งทราฟฟิกทั้งหมดผ่านเซิร์ฟเวอร์พร็อกซีที่ระบุ
ส่งการเชื่อมต่อผ่านพร็อกซี SOCKS5
ระบุชื่อผู้ใช้:รหัสผ่านสำหรับเซิร์ฟเวอร์พร็อกซี
รายการโฮสต์ที่ไม่ควรผ่านพร็อกซี
พร็อกซี SOCKS5 พร้อมการแก้ไข DNS ผ่านพร็อกซี
ใบรับรอง CA เพื่อตรวจสอบพร็อกซี HTTPS เอง
แมปคู่โฮสต์:พอร์ตที่ระบุเป็น IP address แบบกำหนดเอง
เชื่อมต่อกับโฮสต์:พอร์ตที่แตกต่างจากที่ URL ระบุ
ตั้งค่าหมายเลขพอร์ตในเครื่องหรือช่วงสำหรับการเชื่อมต่อ
ผูกการเชื่อมต่อกับอินเทอร์เฟซเครือข่ายที่ระบุ
ใช้เซิร์ฟเวอร์ 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/datacurl --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/securecurl --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/securecurl --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/TLS สำหรับการเชื่อมต่อ (ล้มเหลวหากไม่พร้อมใช้งาน)
ระบุชุดรหัส SSL ที่จะใช้สำหรับการเชื่อมต่อ
ระบุประเภทใบรับรองไคลเอนต์ (PEM, DER, ENG, P12)
ปักหมุดและตรวจสอบ 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/datacurl --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/datacurl --proxy-user: การยืนยันตัวตนพร็อกซี
- ทำหน้าที่อะไร
- แฟล็ก
--proxy-user(หรือ-U) ส่งข้อมูลประจำตัวการยืนยันตัวตนไปยังเซิร์ฟเวอร์พร็อกซี รูปแบบคือuser:passwordนี่เป็นการแยกจากการยืนยันตัวตนกับเซิร์ฟเวอร์ (-u) - เมื่อไหร่ควรใช้
- จำเป็นเมื่อเซิร์ฟเวอร์พร็อกซีต้องการการยืนยันตัวตน — พบได้ทั่วไปในสภาพแวดล้อมเครือข่ายองค์กร ข้อมูลประจำตัวจะถูกส่งไปยังพร็อกซี ไม่ใช่ไปยังเซิร์ฟเวอร์เป้าหมาย
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/datacurl --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 พร้อมการแก้ไข DNS ผ่านพร็อกซี
ใบรับรอง 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/healthcurl --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ตัวเลือกเครือข่ายเพิ่มเติม
ตั้งค่าหมายเลขพอร์ตในเครื่องหรือช่วงสำหรับการเชื่อมต่อ
ผูกการเชื่อมต่อกับอินเทอร์เฟซเครือข่ายที่ระบุ
ใช้เซิร์ฟเวอร์ 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/statusMutual 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/dataDocker 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