curl SSL, TLS és Proxy konfigurációs útmutató
A HTTPS-tanúsítványok, TLS-verziók, proxyk és egyéni DNS-feloldás konfigurálása a curl-ben elengedhetetlen a biztonságos API-kommunikációhoz, CI/CD-folyamatokhoz és hálózati hibák elhárításához. Ez az útmutató minden SSL, TLS, proxy és hálózati kapcsolót bemutat — a tanúsítványellenőrzés kikapcsolásától a -k kapcsolóval helyi fejlesztéshez a kölcsönös TLS beállításáig a --cert kapcsolóval és a forgalom SOCKS5-proxykon keresztüli irányításáig. Minden opció világos magyarázatot, biztonsági szempontokat és másolásra kész példát tartalmaz.
SSL és Proxy kapcsolók gyors referenciája
Nem biztonságos kapcsolatok engedélyezése — minden SSL-ellenőrzés kihagyása
Szervertanúsítvány ellenőrzése specifikus CA-köteg alapján
Klienstanúsítvány biztosítása kölcsönös TLS-hitelesítéshez
A klienstanúsítvány privát kulcsfájljának megadása
TLS 1.2 vagy újabb verzió használata a kapcsolathoz
TLS 1.3 vagy újabb verzió használata a kapcsolathoz
SSL/TLS megkövetelése a kapcsolathoz (hiba, ha nem elérhető)
SSL titkosítók megadása a kapcsolathoz
Klienstanúsítvány típusának megadása (PEM, DER, ENG, P12)
Szerver nyilvános kulcsának rögzítése és ellenőrzése (HPKP-stílus)
Minden forgalom átirányítása a megadott proxyszerverennkeresztül
Kapcsolat átirányítása SOCKS5 proxyn keresztül
Felhasználónév:jelszó megadása a proxyszerverhez
Azoknak a gazdagépeknek a listája, amelyeknek nem kell proxyn keresztül menniük
SOCKS5 proxy DNS-feloldással a proxyn keresztül
CA-tanúsítvány a HTTPS proxy ellenőrzéséhez
Specifikus host:port pár leképezése egyéni IP-címre
Csatlakozás az URL-ben megadottól eltérő host:port-hoz
Helyi portszám vagy tartomány beállítása a kapcsolathoz
Kapcsolat kötése specifikus hálózati interfészhez
Egyéni DNS-szerverek használata a rendszer alapértelmezettjei helyett (c-ares)
curl -k: SSL tanúsítványhibák figyelmen kívül hagyása
- Mit csinál
- A
-k(vagy--insecure) kapcsoló letiltja az összes SSL/TLS tanúsítványellenőrzést. A curl nem ellenőrzi, hogy a szervertanúsítványt megbízható CA írta-e alá, hogy a gazdanév egyezik-e, vagy hogy a tanúsítvány lejárt-e. - Mikor használja
- Használja kizárólag helyi fejlesztéshez önaláírt tanúsítványokkal vagy tesztkörnyezetekben. Staging/production környezethez használja a
--cacertkapcsolót a tényleges CA-tanúsítvánnyal — ez biztonságosabb és egyértelműbb.
$ curl -k https://localhost:8443/api/healthSoha ne használja a -k kapcsolót production szkriptekben vagy CI/CD-folyamatokban. Letiltja az összes tanúsítványellenőrzést, sebezhetővé téve a kapcsolatot man-in-the-middle támadásokkal szemben. Használja a --cacert kapcsolót egy konkrét CA megbízhatóvá tételéhez.
curl --cacert: Egyéni CA-tanúsítvány használata
- Mit csinál
- A
--cacertkapcsoló utasítja a curl-t, hogy a szerver SSL-tanúsítványát egy specifikus CA (Certificate Authority) kötegfájl alapján ellenőrizze PEM formátumban, a rendszer alapértelmezett bizalmi tára helyett. - Mikor használja
- Használja, ha a szervere privát vagy belső CA által aláírt tanúsítványt használ, amely nincs a rendszer bizalmi tárában. Ez gyakori vállalati környezetekben, Kubernetes-klaszterekben és Docker-beállításoknál belső PKI-vel.
$ curl --cacert /path/to/corporate-ca.pem https://internal-api.example.com/datacurl --cert: Klienstanúsítvány (kölcsönös TLS)
- Mit csinál
- A
--certkapcsoló kliens oldali tanúsítványt biztosít a kölcsönös TLS (mTLS) hitelesítéshez. Az mTLS-ben mind a szerver, mind a kliens tanúsítványt mutat be egymás azonosításának ellenőrzéséhez. A tanúsítványfájl PEM vagy PKCS#12 formátumú legyen. - Mikor használja
- Szükséges, ha a szerver klienstanúsítvány-hitelesítést igényel — gyakori banki API-knál, kormányzati szolgáltatásoknál, IoT-eszköz kommunikációnál és zero-trust architektúráknál. Mindig párosítsa a
--keykapcsolóval, kivéve ha a kulcs be van ágyazva a tanúsítványfájlba.
$ curl --cert client.pem --key client-key.pem https://mtls-api.example.com/securecurl --key: Klienstanúsítvány privát kulcsa
- Mit csinál
- A
--keykapcsoló megadja a--certkapcsolóval biztosított klienstanúsítványhoz tartozó privát kulcsfájlt. A kulcsnak egyeznie kell a tanúsítvánnyal. Ha a kulcs jelszóvédett, a curl kéri a jelszót (vagy használja a--passkapcsolót). - Mikor használja
- Mindig a
--certkapcsolóval együtt használja. Ha a privát kulcs már be van ágyazva a tanúsítványfájlba (gyakori PKCS#12 / .p12 fájloknál), a--keyelhagyható.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/securecurl --tlsv1.2: TLS 1.2 minimum kikényszerítése
- Mit csinál
- A
--tlsv1.2kapcsoló arra kényszeríti a curl-t, hogy a TLS 1.2-t használja minimális elfogadható verzióként az SSL/TLS-kézfogáshoz. A régebbi protokollok (TLS 1.0, 1.1, SSLv3) elutasításra kerülnek. - Mikor használja
- Használja minimális biztonsági szabvány érvényesítéséhez. A TLS 1.2 szükséges a PCI-DSS megfelelőséghez és minden modern szerver támogatja. A legtöbb modern curl build alapértelmezetten TLS 1.2+ verziót használ, de ez a kapcsoló egyértelművé teszi.
$ curl --tlsv1.2 -v https://secure.example.com/api 2>&1 | grep 'SSL connection'curl --tlsv1.3: TLS 1.3 minimum kikényszerítése
- Mit csinál
- A
--tlsv1.3kapcsoló arra kényszeríti a curl-t, hogy a TLS 1.3-at használja — a leggyorsabb és legbiztonságosabb TLS-verziót. A TLS 1.3 kiküszöböli a kézfogás extra körútját (0-RTT támogatás) és eltávolítja az összes elavult titkosító csomagot. - Mikor használja
- Használja, ha tudja, hogy a szerver támogatja a TLS 1.3-at és a legjobb teljesítményt és biztonságot szeretné. Megjegyzés: a TLS 1.3 OpenSSL 1.1.1+ vagy kompatibilis TLS-könyvtárat igényel. Még nem minden szerver támogatja.
$ curl --tlsv1.3 https://modern-api.example.com/dataTovábbi SSL/TLS opciók
SSL/TLS megkövetelése a kapcsolathoz (hiba, ha nem elérhető)
SSL titkosítók megadása a kapcsolathoz
Klienstanúsítvány típusának megadása (PEM, DER, ENG, P12)
Szerver nyilvános kulcsának rögzítése és ellenőrzése (HPKP-stílus)
curl -x: HTTP/HTTPS proxy használata
- Mit csinál
- A
-x(vagy--proxy) kapcsoló a curl összes forgalmát a megadott proxyszerverenn keresztül irányítja. A formátum:[protocol://]host[:port]. Támogatott proxy-protokollok: HTTP, HTTPS, SOCKS4, SOCKS5. - Mikor használja
- Használja vállalati proxyszerverekhez, hibakereséshez Fiddler, Charles vagy mitmproxy eszközökkel, földrajzi korlátozások teszteléséhez, vagy amikor közvetlen internet-hozzáférés nem áll rendelkezésre. A
http_proxy/https_proxykörnyezeti változókat is beállíthatja helyette.
$ curl -x http://proxy.example.com:8080 https://api.example.com/datacurl --socks5: SOCKS5 proxy használata
- Mit csinál
- A
--socks5kapcsoló utasítja a curl-t SOCKS5 proxy használatára a TCP-kapcsolathoz. A HTTP proxyktól eltérően a SOCKS5 TCP szinten működik és bármilyen protokollt kezelhet — nem csak HTTP-t. A DNS-feloldás alapértelmezetten helyi; használja a--socks5-hostnamekapcsolót a DNS proxyn keresztüli feloldásához. - Mikor használja
- Használja SSH-alagutakhoz (
ssh -D), Tor hálózati hozzáféréshez, vagy amikor a proxynak nem HTTP protokollokat kell kezelnie. A SOCKS5 támogatja az UDP-t és opcionálisan kezelheti a DNS-t — rugalmasabbá téve a HTTP proxyknál.
$ curl --socks5 localhost:1080 https://api.example.com/datacurl --proxy-user: Proxy hitelesítés
- Mit csinál
- A
--proxy-user(vagy-U) kapcsoló hitelesítő adatokat küld a proxyszervernek. A formátum:user:password. Ez elkülönül a szerverhitelesítéstől (-u). - Mikor használja
- Szükséges, ha a proxyszerver hitelesítést igényel — gyakori vállalati és nagyvállalati hálózati környezetekben. A hitelesítő adatok a proxyhoz kerülnek elküldésre, nem a célszerverhez.
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/datacurl --noproxy: Proxy megkerülése adott gazdagépekhez
- Mit csinál
- A
--noproxykapcsoló vesszővel elválasztott listát ad meg azokról a gazdagépekről, tartományokról vagy IP-címekről, amelyeknek meg kell kerülniük a proxyt és közvetlenül kell csatlakozniuk. Támogatja a helyettesítő karaktereket:*.example.comminden aldomainre illeszkedik. - Mikor használja
- Használja a localhost, belső szolgáltatások vagy specifikus tartományok kizárásához a proxyhasználatból. Ez fontos, ha a proxy globálisan van beállítva környezeti változókon keresztül, de egyes gazdagépeknek (pl. helyi szolgáltatásoknak) közvetlen hozzáférésre van szükségük. Használja a
*karaktert az összes gazdagép proxy megkerüléséhez.
$ curl -x http://proxy:8080 --noproxy "localhost,127.0.0.1,*.internal.com" https://localhost:3000/apiTovábbi proxy opciók
SOCKS5 proxy DNS-feloldással a proxyn keresztül
CA-tanúsítvány a HTTPS proxy ellenőrzéséhez
curl --resolve: Egyéni DNS-feloldás
- Mit csinál
- A
--resolvekapcsoló egyéni IP-címet ad meg egy specifikushost:portpárhoz, teljesen megkerülve a DNS-keresést. A formátum:host:port:address. Több--resolvebejegyzés is megadható. - Mikor használja
- Elengedhetetlen teszteléshez DNS-propagálás előtt, specifikus backend ellenőrzéséhez terheléselosztó mögött, vagy helyi fejlesztéshez, ahol valódi gazdanévre van szükség az SSL-tanúsítvány érvényesítéséhez. Az
/etc/hostsszerkesztésétől eltérően ez kérésenként és port-specifikus.
$ curl --resolve api.example.com:443:127.0.0.1 https://api.example.com/healthcurl --connect-to: Kapcsolat átirányítása másik gazdagépre
- Mit csinál
- A
--connect-tokapcsoló átirányítja a TCP-kapcsolatot egy másikhost:portpárra, miközben megtartja az eredeti URL-t a HTTP-kéréshez (beleértve aHostfejlécet és az SNI-t). Formátum:HOST1:PORT1:HOST2:PORT2. - Mikor használja
- Használja specifikus backend szerver teszteléséhez terheléselosztó mögött DNS vagy
/etc/hostsmódosítása nélkül. A--resolvekapcsolótól eltérően ez host:port-ot host:port-ra képez le (nem IP-re), ami hasznos, ha a célnak is van gazdaneve.
$ curl --connect-to api.example.com:443:backend1.internal:8443 https://api.example.com/healthTovábbi hálózati opciók
Helyi portszám vagy tartomány beállítása a kapcsolathoz
Kapcsolat kötése specifikus hálózati interfészhez
Egyéni DNS-szerverek használata a rendszer alapértelmezettjei helyett (c-ares)
Valós SSL és proxy forgatókönyvek
Ezek a példák több kapcsolót kombinálnak a fejlesztés, CI/CD és production környezetekben előforduló gyakori biztonsági és hálózati feladatok kezeléséhez.
HTTPS tesztelése Localhoston
Helyi fejlesztéskor önaláírt tanúsítvánnyal kombinálja a --resolve kapcsolót a --cacert kapcsolóval (vagy -k gyors teszteléshez). Ez lehetővé teszi valódi gazdanév használatát a megfelelő SSL/SNI érvényesítéshez a hosts fájl módosítása nélkül.
$ curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/api/statusKölcsönös TLS (klienstanúsítvány-hitelesítés)
Egyes API-k megkövetelik, hogy mind a szerver, mind a kliens tanúsítványt mutasson be. Adja meg a --cert, --key és --cacert kapcsolókat a teljesen ellenőrzött kétirányú TLS-kapcsolat létrehozásához.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://mtls-api.example.com/dataVállalati proxy hitelesítéssel
Kötelező proxyszerverrel rendelkező vállalati hálózatokban kombinálja a -x kapcsolót a -U kapcsolóval a proxy hitelesítő adatokhoz. Adja hozzá a --noproxy kapcsolót a belső szolgáltatások kizárásához a proxyhasználatból.
$ curl -x http://proxy.corp.com:3128 -U user:pass --noproxy "*.internal.corp" https://external-api.com/dataDocker konténer belső CA-val
Ha a Docker-szolgáltatások belső CA tanúsítványait használják, csatlakoztassa a CA-tanúsítványt a konténerbe és hivatkozzon rá a --cacert kapcsolóval. Ez biztonságosabb mint a -k, mert továbbra is érvényesíti a tanúsítványláncot.
$ curl --cacert /etc/ssl/certs/internal-ca.crt https://service.docker.internal:8443/healthSOCKS5 proxy SSH-alagúton keresztül
Hozzon létre SOCKS5 proxyt az ssh -D paranccsal és irányítsa a curl forgalmat rajta keresztül a --socks5 kapcsolóval. Ez hasznos belső szolgáltatások eléréséhez bastion-gazdagépen keresztül.
$ curl --socks5 localhost:1080 https://internal-api.example.com/statusGyakran Ismételt Kérdések a curl SSL-ről és proxyról
Hogyan hagyhatom ki az SSL-tanúsítvány ellenőrzését a curl-ben?
Használja a curl -k URL vagy curl --insecure URL parancsot. Ez letiltja az összes tanúsítványellenőrzést — lejárat, gazdanév-eltérés, nem megbízható CA. Használja kizárólag helyi fejlesztéshez. Production-ben használja a --cacert kapcsolót a tényleges CA-tanúsítvánnyal.
Hogyan bíztathatom meg a curl-lel egy önaláírt tanúsítványt?
Használja a curl --cacert /path/to/ca.pem URL parancsot az önaláírt tanúsítványt aláíró CA-tanúsítvány megadásához. Ez biztonságosabb mint a -k, mert továbbra is érvényesíti a tanúsítványláncot — csak az Ön specifikus CA-ját bízva meg.
Hogyan ellenőrizhetem, melyik TLS-verziót használja a curl?
Futtassa a curl -v URL parancsot és keresse a * SSL connection using TLSv1.x / CipherSuite sort a részletes kimenetben. Specifikus verzió kikényszerítéséhez használja a --tlsv1.2 vagy --tlsv1.3 kapcsolót.
Mi a kölcsönös TLS (mTLS) és hogyan használjam curl-lel?
A kölcsönös TLS megköveteli, hogy mind a szerver, mind a kliens tanúsítványt mutasson be. Használat: curl --cert client.pem --key client-key.pem --cacert server-ca.pem URL. A --cert/--key pár a klienst hitelesíti; a --cacert a szervert ellenőrzi.
Hogyan használjam a curl-t HTTP proxyn keresztül?
Használja a curl -x http://proxy:port URL parancsot. HTTPS proxyhoz: curl -x https://proxy:port URL. Alternatívaként állítsa be a http_proxy és https_proxy környezeti változókat — a curl automatikusan felismeri őket.
Hogyan használjam a curl-t SOCKS5 proxyval?
Használja a curl --socks5 host:port URL parancsot helyi DNS-feloldáshoz, vagy a curl --socks5-hostname host:port URL parancsot a DNS proxyn keresztüli feloldásához (fontos adatvédelem/Tor számára). SSH-alagút példa: ssh -D 1080 user@bastion, majd curl --socks5 localhost:1080 URL.
Hogyan hitelesíthetek proxyszerverrel curl-ben?
Használja a curl -x http://proxy:port -U user:password URL parancsot. A -U (vagy --proxy-user) kapcsoló hitelesítő adatokat küld a proxynak. Ez elkülönül a -u kapcsolótól, amely a célszerverrel hitelesít.
Hogyan zárhatok ki bizonyos gazdagépeket a proxyból curl-ben?
Használja a --noproxy "localhost,127.0.0.1,*.internal.com" kapcsolót vagy állítsa be a NO_PROXY környezeti változót. Támogatja a helyettesítő karaktereket (*.example.com). Használja a --noproxy "*" kapcsolót a proxy teljes megkerüléséhez egyetlen kéréshez.
Hogyan tesztelhetem a HTTPS-t localhoston curl-lel?
Gyors teszteléshez: curl -k https://localhost:8443/. Megfelelő ellenőrzéshez: curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/. A --resolve megközelítés lehetővé teszi a tanúsítvány gazdanevének helyes egyeztetését.
Hogyan írhatok felül DNS-feloldást specifikus gazdagéphez curl-ben?
Használja a curl --resolve host:port:IP URL parancsot. Példa: curl --resolve api.example.com:443:192.168.1.100 https://api.example.com/. Ez csak az adott host:port párhoz kerüli meg a DNS-t — nem kell szerkeszteni az /etc/hosts fájlt.
Hogyan javítható a 'SSL certificate problem: certificate has expired' hiba curl-ben?
A szervertanúsítvány lejárt. Megoldások: (1) Újítsa meg a tanúsítványt a szerveren, (2) Frissítse a CA-köteget: curl --cacert /path/to/updated-ca.pem URL, (3) Csak teszteléshez: curl -k URL. Lejárat ellenőrzése: curl -v URL 2>&1 | grep expire.
Biztonságos a curl --insecure (-k) használata production-ben?
Nem. A -k kapcsoló letiltja az összes tanúsítványellenőrzést — lejárat, gazdanév és bizalmi lánc. Ez sebezhetővé teszi a kapcsolatot man-in-the-middle támadásokkal szemben. Production-ben és CI/CD-folyamatokban mindig használja a --cacert kapcsolót a specifikus CA-tanúsítvánnyal.