curl SSL, TLS va Proxy sozlash qo'llanmasi

curl da HTTPS sertifikatlari, TLS versiyalari, proksilar va maxsus DNS hal qilishni sozlash xavfsiz API aloqasi, CI/CD quvurlari va tarmoq muammolarini nosozliklarini aniqlash uchun muhimdir. Ushbu qo'llanma barcha SSL, TLS, proksi va tarmoq bayroqlarini qamrab oladi — mahalliy dasturlash uchun -k bilan sertifikat tekshiruvini o'chirish dan --cert bilan o'zaro TLS ni sozlash va SOCKS5 proksilar orqali trafikni yo'naltirishgacha. Har bir parametr aniq tushuntirish, xavfsizlik mulohazalari va nusxa olishga tayyor misolni o'z ichiga oladi.

SSL va Proxy bayroqlari tezkor ma'lumotnomasi

-kSSL/TLS

Xavfli ulanishlarga ruxsat berish — barcha SSL tekshiruvini o'tkazib yuborish

--cacertSSL/TLS

Server sertifikatini ma'lum bir CA to'plami bo'yicha tekshirish

--certSSL/TLS

O'zaro TLS autentifikatsiyasi uchun mijoz sertifikatini taqdim etish

--keySSL/TLS

Mijoz sertifikati uchun shaxsiy kalit faylini taqdim etish

--tlsv1.2SSL/TLS

Ulanish uchun TLS 1.2 yoki undan yuqori versiyadan foydalanish

--tlsv1.3SSL/TLS

Ulanish uchun TLS 1.3 yoki undan yuqori versiyadan foydalanish

--ssl-reqdSSL/TLS

Ulanish uchun SSL/TLS ni talab qilish (mavjud bo'lmasa muvaffaqiyatsiz)

--ciphersSSL/TLS

Ulanish uchun qaysi SSL shifrlardan foydalanishni belgilash

--cert-typeSSL/TLS

Mijoz sertifikati turini belgilash (PEM, DER, ENG, P12)

--pinnedpubkeySSL/TLS

Server ochiq kalitini pin qilish va tekshirish (HPKP uslubida)

-xProxy

Barcha trafikni belgilangan proksi server orqali yo'naltirish

Ulanishni SOCKS5 proksi orqali yo'naltirish

Proksi server uchun foydalanuvchi:parol berish

Proksi orqali o'tmasligi kerak bo'lgan xostlar ro'yxati

--socks5-hostnameProxy

DNS hal qilish proksi orqali amalga oshiriladigan SOCKS5 proksi

--proxy-cacertProxy

HTTPS proksini tekshirish uchun CA sertifikati

--resolveTarmoq

Ma'lum bir host:port juftligini maxsus IP manzilga moslashtirish

URL belgilaganidan boshqa host:port ga ulanish

--local-portTarmoq

Ulanish uchun mahalliy port raqami yoki diapazonni belgilash

--interfaceTarmoq

Ulanishni ma'lum bir tarmoq interfeysiga bog'lash

--dns-serversTarmoq

Tizim standartlari o'rniga maxsus DNS serverlaridan foydalanish (c-ares)

curl -k: SSL sertifikat xatolarini e'tiborsiz qoldirish

Nima qiladi
-k (yoki --insecure) bayrog'i barcha SSL/TLS sertifikat tekshiruvini o'chiradi. curl server sertifikati ishonchli CA tomonidan imzolanganmi, xost nomi mos keladimi yoki sertifikat muddati o'tganmi tekshirmaydi.
Qachon foydalanish kerak
O'zi imzolagan sertifikatlar bilan mahalliy dasturlash yoki sinov muhitlari uchun faqat foydalaning. Staging/production uchun o'rniga --cacert bilan haqiqiy CA sertifikatidan foydalaning — bu xavfsizroq va aniqroq.
$ curl -k https://localhost:8443/api/health

Production skriptlari yoki CI/CD quvurlarida hech qachon -k ishlatmang. U barcha sertifikat tekshiruvini o'chiradi va ulanishingizni o'rtadagi odam hujumlariga zaif qiladi. O'rniga ma'lum bir CA ni ishonch bilan tasdiqlash uchun --cacert dan foydalaning.

curl --cacert: Maxsus CA sertifikatidan foydalanish

Nima qiladi
--cacert bayrog'i curl ga serverning SSL sertifikatini tizimning standart ishonch do'koni o'rniga PEM formatidagi ma'lum bir CA (Sertifikat markazi) to'plam fayli bo'yicha tekshirishni buyuradi.
Qachon foydalanish kerak
Serveringiz tizim ishonch do'konida bo'lmagan shaxsiy yoki ichki CA tomonidan imzolangan sertifikat ishlatganda foydalaning. Bu korporativ muhitlarda, Kubernetes klasterlarida va ichki PKI bilan Docker sozlamalarida keng tarqalgan.
$ curl --cacert /path/to/corporate-ca.pem https://internal-api.example.com/data

curl --cert: Mijoz sertifikati (O'zaro TLS)

Nima qiladi
--cert bayrog'i o'zaro TLS (mTLS) uchun mijoz tomonidagi sertifikatni taqdim etadi. mTLS da server ham mijoz ham bir-birining shaxsini tasdiqlash uchun sertifikatlar taqdim etadi. Sertifikat fayli PEM yoki PKCS#12 formatida bo'lishi kerak.
Qachon foydalanish kerak
Server mijoz sertifikati autentifikatsiyasini talab qilganda zarur — bank API lari, davlat xizmatlari, IoT qurilma aloqasi va nol ishonch arxitekturalarida keng tarqalgan. Kalit sertifikat fayliga kiritilgan bo'lmasa, har doim --key bilan juftlang.
$ curl --cert client.pem --key client-key.pem https://mtls-api.example.com/secure

curl --key: Mijoz sertifikati shaxsiy kaliti

Nima qiladi
--key bayrog'i --cert tomonidan taqdim etilgan mijoz sertifikati bilan juftlangan shaxsiy kalit faylini belgilaydi. Kalit sertifikatga mos kelishi kerak. Agar kalit parol bilan himoyalangan bo'lsa, curl parol so'raydi (yoki --pass dan foydalaning).
Qachon foydalanish kerak
Har doim --cert bilan birga foydalaning. Agar shaxsiy kalit allaqachon sertifikat fayliga kiritilgan bo'lsa (PKCS#12 / .p12 fayllar bilan keng tarqalgan), --key ni tushirib qoldirish mumkin.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/secure

curl --tlsv1.2: Minimal TLS 1.2 ni majburlash

Nima qiladi
--tlsv1.2 bayrog'i curl ni SSL/TLS qo'l siqish uchun minimal qabul qilinadigan versiya sifatida TLS 1.2 dan foydalanishga majbur qiladi. Eski protokollar (TLS 1.0, 1.1, SSLv3) rad etiladi.
Qachon foydalanish kerak
Minimal xavfsizlik standartini ta'minlash uchun foydalaning. TLS 1.2 PCI-DSS muvofiqlik uchun talab qilinadi va barcha zamonaviy serverlar tomonidan qo'llab-quvvatlanadi. Ko'p zamonaviy curl qurilmalari allaqachon sukut bo'yicha TLS 1.2+ dan foydalanadi, lekin bu bayroq buni aniq qiladi.
$ curl --tlsv1.2 -v https://secure.example.com/api 2>&1 | grep 'SSL connection'

curl --tlsv1.3: Minimal TLS 1.3 ni majburlash

Nima qiladi
--tlsv1.3 bayrog'i curl ni TLS 1.3 dan foydalanishga majbur qiladi — eng tez va eng xavfsiz TLS versiyasi. TLS 1.3 qo'l siqishdagi qo'shimcha round-trip ni yo'q qiladi (0-RTT qo'llab-quvvatlash) va barcha eskirgan shifr to'plamlarini olib tashlaydi.
Qachon foydalanish kerak
Server TLS 1.3 ni qo'llab-quvvatlashini bilsangiz va eng yaxshi ishlash va xavfsizlikni xohlasangiz foydalaning. Eslatma: TLS 1.3 OpenSSL 1.1.1+ yoki mos TLS kutubxonasini talab qiladi. Hali barcha serverlar uni qo'llab-quvvatlamaydi.
$ curl --tlsv1.3 https://modern-api.example.com/data

Qo'shimcha SSL/TLS parametrlari

--ssl-reqd

Ulanish uchun SSL/TLS ni talab qilish (mavjud bo'lmasa muvaffaqiyatsiz)

--ciphers

Ulanish uchun qaysi SSL shifrlardan foydalanishni belgilash

--cert-type

Mijoz sertifikati turini belgilash (PEM, DER, ENG, P12)

--pinnedpubkey

Server ochiq kalitini pin qilish va tekshirish (HPKP uslubida)

curl -x: HTTP/HTTPS Proksidan foydalanish

Nima qiladi
-x (yoki --proxy) bayrog'i barcha curl trafikni belgilangan proksi server orqali yo'naltiradi. Format: [protocol://]host[:port]. Qo'llab-quvvatlanadigan proksi protokollari: HTTP, HTTPS, SOCKS4, SOCKS5.
Qachon foydalanish kerak
Korporativ proksi serverlari, Fiddler, Charles yoki mitmproxy kabi vositalar bilan nosozliklarni aniqlash, geografik cheklovlarni sinash yoki to'g'ridan-to'g'ri internet kirish imkoni bo'lmaganda foydalaning. Siz http_proxy / https_proxy muhit o'zgaruvchilarini ham o'rnatishingiz mumkin.
$ curl -x http://proxy.example.com:8080 https://api.example.com/data

curl --socks5: SOCKS5 Proksidan foydalanish

Nima qiladi
--socks5 bayrog'i curl ga TCP ulanishi uchun SOCKS5 proksidan foydalanishni buyuradi. HTTP proksidan farqli o'laroq, SOCKS5 TCP darajasida ishlaydi va istalgan protokolni boshqara oladi — faqat HTTP emas. DNS hal qilish sukut bo'yicha mahalliy amalga oshiriladi; DNS ni proksi orqali hal qilish uchun --socks5-hostname dan foydalaning.
Qachon foydalanish kerak
SSH tunnellari (ssh -D), Tor tarmog'iga kirish yoki proksi HTTP bo'lmagan protokollarni boshqarishi kerak bo'lganda foydalaning. SOCKS5 UDP ni qo'llab-quvvatlaydi va ixtiyoriy ravishda DNS ni boshqara oladi — bu uni HTTP proksiga qaraganda ko'proq moslashuvchan qiladi.
$ curl --socks5 localhost:1080 https://api.example.com/data

curl --proxy-user: Proksi autentifikatsiyasi

Nima qiladi
--proxy-user (yoki -U) bayrog'i proksi serverga autentifikatsiya ma'lumotlarini yuboradi. Format: user:password. Bu server autentifikatsiyasidan (-u) alohida.
Qachon foydalanish kerak
Proksi server autentifikatsiyani talab qilganda zarur — korporativ va korxona tarmoq muhitlarida keng tarqalgan. Ma'lumotlar maqsadli serverga emas, proksiga yuboriladi.
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/data

curl --noproxy: Ma'lum xostlar uchun proksini chetlab o'tish

Nima qiladi
--noproxy bayrog'i proksini chetlab o'tib to'g'ridan-to'g'ri ulanishi kerak bo'lgan xostlar, domenlar yoki IP manzillarining vergul bilan ajratilgan ro'yxatini belgilaydi. Joker belgilarni qo'llab-quvvatlaydi: *.example.com barcha subdomenlarni moslashtiradi.
Qachon foydalanish kerak
Localhost, ichki xizmatlar yoki ma'lum domenlarni proksidan chiqarish uchun foydalaning. Bu proksi muhit o'zgaruvchilari orqali global o'rnatilgan, lekin ba'zi xostlar (masalan, mahalliy xizmatlar) to'g'ridan-to'g'ri kirishni talab qilganda muhim. Barcha xostlar uchun proksini chetlab o'tish uchun * dan foydalaning.
$ curl -x http://proxy:8080 --noproxy "localhost,127.0.0.1,*.internal.com" https://localhost:3000/api

Qo'shimcha Proxy parametrlari

--socks5-hostname

DNS hal qilish proksi orqali amalga oshiriladigan SOCKS5 proksi

--proxy-cacert

HTTPS proksini tekshirish uchun CA sertifikati

curl --resolve: Maxsus DNS hal qilish

Nima qiladi
--resolve bayrog'i DNS qidiruvini to'liq chetlab o'tib, ma'lum bir host:port jufti uchun maxsus IP manzilni taqdim etadi. Format: host:port:address. Bir nechta --resolve yozuvlarini berish mumkin.
Qachon foydalanish kerak
DNS tarqalishidan oldin sinash, yuk balanslash ortidagi ma'lum bir backendni tekshirish yoki SSL sertifikat tekshiruvi uchun haqiqiy xost nomi kerak bo'lgan mahalliy dasturlash uchun muhim. /etc/hosts ni tahrirlashdan farqli o'laroq, bu har bir so'rov va portga xos.
$ curl --resolve api.example.com:443:127.0.0.1 https://api.example.com/health

curl --connect-to: Ulanishni boshqa xostga yo'naltirish

Nima qiladi
--connect-to bayrog'i TCP ulanishini HTTP so'rovi uchun asl URL ni (Host sarlavhasi va SNI shu jumladan) saqlab turgan holda boshqa host:port juftiga yo'naltiradi. Format: HOST1:PORT1:HOST2:PORT2.
Qachon foydalanish kerak
DNS yoki /etc/hosts ni o'zgartirmasdan yuk balanslash ortidagi ma'lum bir backend serverni sinash uchun foydalaning. --resolve dan farqli o'laroq, bu host:port ni host:port ga moslashtiradi (IP ga emas), bu maqsadning ham xost nomi bo'lganda foydali.
$ curl --connect-to api.example.com:443:backend1.internal:8443 https://api.example.com/health

Qo'shimcha Tarmoq parametrlari

--local-port

Ulanish uchun mahalliy port raqami yoki diapazonni belgilash

--interface

Ulanishni ma'lum bir tarmoq interfeysiga bog'lash

--dns-servers

Tizim standartlari o'rniga maxsus DNS serverlaridan foydalanish (c-ares)

Haqiqiy SSL va Proxy senariylari

Ushbu misollar dasturlash, CI/CD va production muhitlarida keng tarqalgan xavfsizlik va tarmoq vazifalarini bajarish uchun bir nechta bayroqlarni birlashtiradi.

Localhost da HTTPS ni sinash

O'zi imzolagan sertifikat bilan mahalliy dasturlashda --resolve ni --cacert bilan (yoki tez sinash uchun -k) birlashtiring. Bu hosts faylingizni o'zgartirmasdan to'g'ri SSL/SNI uchun haqiqiy xost nomidan foydalanishga imkon beradi.

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

O'zaro TLS (Mijoz sertifikati autentifikatsiyasi)

Ba'zi API lar server ham mijoz ham sertifikat taqdim etishini talab qiladi. To'liq tasdiqlangan ikki tomonlama TLS ulanishini o'rnatish uchun --cert, --key va --cacert ni taqdim eting.

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

Autentifikatsiyali korporativ proksi

Majburiy proksi serverlari bo'lgan korporativ tarmoqlarda proksi ma'lumotlari uchun -x ni -U bilan birlashtiring. Ichki xizmatlarni proksidan chiqarish uchun --noproxy qo'shing.

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

Ichki CA bilan Docker konteyneri

Docker dagi xizmatlar ichki CA dan sertifikatlar ishlatganda, CA sertifikatini konteynerga o'rnating va --cacert bilan havola qiling. Bu -k dan xavfsizroq, chunki u hali ham sertifikat zanjirini tekshiradi.

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

SSH Tunnel orqali SOCKS5 proksi

ssh -D bilan SOCKS5 proksi yarating va curl trafikni --socks5 orqali yo'naltiring. Bu bastion xosti orqali ichki xizmatlarga kirish uchun foydali.

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

curl SSL va Proxy haqida tez-tez so'raladigan savollar

curl da SSL sertifikat tekshiruvini qanday o'tkazib yuborish mumkin?

curl -k URL yoki curl --insecure URL dan foydalaning. Bu barcha sertifikat tekshiruvlarini o'chiradi — muddati o'tgan, xost nomi mos kelmasligi, ishonchsiz CA. Mahalliy dasturlash uchun faqat foydalaning. Production uchun haqiqiy CA sertifikati bilan --cacert dan foydalaning.

curl ga o'zi imzolagan sertifikatni qanday ishonchli qilish mumkin?

O'zi imzolagan sertifikatingizni imzolagan CA sertifikatini belgilash uchun curl --cacert /path/to/ca.pem URL dan foydalaning. Bu -k dan xavfsizroq, chunki u hali ham sertifikat zanjirini tekshiradi — faqat sizning ma'lum CA ingizga ishonadi.

curl qaysi TLS versiyasini ishlatayotganini qanday tekshirish mumkin?

curl -v URL ni ishga tushiring va verbose chiqishda * SSL connection using TLSv1.x / CipherSuite qatorini qidiring. Ma'lum bir versiyani majburlash uchun --tlsv1.2 yoki --tlsv1.3 dan foydalaning.

O'zaro TLS (mTLS) nima va curl bilan qanday foydalaniladi?

O'zaro TLS server ham mijoz ham sertifikatlar taqdim etishini talab qiladi. Foydalaning: curl --cert client.pem --key client-key.pem --cacert server-ca.pem URL. --cert/--key jufti mijozni autentifikatsiya qiladi; --cacert serverni tekshiradi.

curl ni HTTP proksi orqali qanday ishlatish mumkin?

curl -x http://proxy:port URL dan foydalaning. HTTPS proksi uchun: curl -x https://proxy:port URL. Muqobil ravishda http_proxy va https_proxy muhit o'zgaruvchilarini o'rnating — curl ularni avtomatik qabul qiladi.

curl ni SOCKS5 proksi bilan qanday ishlatish mumkin?

Mahalliy DNS hal qilish uchun curl --socks5 host:port URL dan yoki DNS ni proksi orqali hal qilish uchun curl --socks5-hostname host:port URL dan foydalaning (maxfiylik/Tor uchun muhim). SSH tunnel bilan misol: ssh -D 1080 user@bastion, keyin curl --socks5 localhost:1080 URL.

curl da proksi server bilan qanday autentifikatsiya qilish mumkin?

curl -x http://proxy:port -U user:password URL dan foydalaning. -U (yoki --proxy-user) bayrog'i ma'lumotlarni proksiga yuboradi. Bu maqsadli server bilan autentifikatsiya qiladigan -u dan alohida.

curl da ma'lum xostlarni proksidan qanday chiqarish mumkin?

--noproxy "localhost,127.0.0.1,*.internal.com" dan foydalaning yoki NO_PROXY muhit o'zgaruvchisini o'rnating. Joker belgilarni qo'llab-quvvatlaydi (*.example.com). Bitta so'rov uchun proksini butunlay chetlab o'tish uchun --noproxy "*" dan foydalaning.

curl bilan localhost da HTTPS ni qanday sinash mumkin?

Tez sinash uchun: curl -k https://localhost:8443/. To'g'ri tekshiruv uchun: curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/. --resolve yondashuvi sertifikat xost nomining to'g'ri mos kelishiga imkon beradi.

curl da ma'lum bir xost uchun DNS hal qilishni qanday bekor qilish mumkin?

curl --resolve host:port:IP URL dan foydalaning. Misol: curl --resolve api.example.com:443:192.168.1.100 https://api.example.com/. Bu faqat o'sha host:port jufti uchun DNS ni chetlab o'tadi — /etc/hosts ni tahrirlash shart emas.

curl da 'SSL certificate problem: certificate has expired' xatosini qanday tuzatish mumkin?

Server sertifikati muddati o'tgan. Yechimlar: (1) Serverdagi sertifikatni yangilang, (2) CA to'plamingizni yangilang: curl --cacert /path/to/updated-ca.pem URL, (3) Faqat sinash uchun: curl -k URL. Muddatni tekshiring: curl -v URL 2>&1 | grep expire.

Production da curl --insecure (-k) ishlatish xavfsizmi?

Yo'q. -k bayrog'i barcha sertifikat tekshiruvini o'chiradi — muddati, xost nomi va ishonch zanjiri. Bu ulanishingizni o'rtadagi odam hujumlariga zaif qiladi. Production va CI/CD quvurlarida har doim ma'lum CA sertifikati bilan --cacert dan foydalaning.