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

-kSSL/TLS

Nem biztonságos kapcsolatok engedélyezése — minden SSL-ellenőrzés kihagyása

--cacertSSL/TLS

Szervertanúsítvány ellenőrzése specifikus CA-köteg alapján

--certSSL/TLS

Klienstanúsítvány biztosítása kölcsönös TLS-hitelesítéshez

--keySSL/TLS

A klienstanúsítvány privát kulcsfájljának megadása

--tlsv1.2SSL/TLS

TLS 1.2 vagy újabb verzió használata a kapcsolathoz

--tlsv1.3SSL/TLS

TLS 1.3 vagy újabb verzió használata a kapcsolathoz

--ssl-reqdSSL/TLS

SSL/TLS megkövetelése a kapcsolathoz (hiba, ha nem elérhető)

--ciphersSSL/TLS

SSL titkosítók megadása a kapcsolathoz

--cert-typeSSL/TLS

Klienstanúsítvány típusának megadása (PEM, DER, ENG, P12)

--pinnedpubkeySSL/TLS

Szerver nyilvános kulcsának rögzítése és ellenőrzése (HPKP-stílus)

-xProxy

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-hostnameProxy

SOCKS5 proxy DNS-feloldással a proxyn keresztül

--proxy-cacertProxy

CA-tanúsítvány a HTTPS proxy ellenőrzéséhez

--resolveHálózat

Specifikus host:port pár leképezése egyéni IP-címre

--connect-toHálózat

Csatlakozás az URL-ben megadottól eltérő host:port-hoz

--local-portHálózat

Helyi portszám vagy tartomány beállítása a kapcsolathoz

--interfaceHálózat

Kapcsolat kötése specifikus hálózati interfészhez

--dns-serversHálózat

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 --cacert kapcsolót a tényleges CA-tanúsítvánnyal — ez biztonságosabb és egyértelműbb.
$ curl -k https://localhost:8443/api/health

Soha 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 --cacert kapcsoló 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/data

curl --cert: Klienstanúsítvány (kölcsönös TLS)

Mit csinál
A --cert kapcsoló 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 --key kapcsoló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/secure

curl --key: Klienstanúsítvány privát kulcsa

Mit csinál
A --key kapcsoló megadja a --cert kapcsoló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 --pass kapcsolót).
Mikor használja
Mindig a --cert kapcsoló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 --key elhagyható.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/secure

curl --tlsv1.2: TLS 1.2 minimum kikényszerítése

Mit csinál
A --tlsv1.2 kapcsoló 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.3 kapcsoló 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/data

További SSL/TLS opciók

--ssl-reqd

SSL/TLS megkövetelése a kapcsolathoz (hiba, ha nem elérhető)

--ciphers

SSL titkosítók megadása a kapcsolathoz

--cert-type

Klienstanúsítvány típusának megadása (PEM, DER, ENG, P12)

--pinnedpubkey

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_proxy környezeti változókat is beállíthatja helyette.
$ curl -x http://proxy.example.com:8080 https://api.example.com/data

curl --socks5: SOCKS5 proxy használata

Mit csinál
A --socks5 kapcsoló 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-hostname kapcsoló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/data

curl --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/data

curl --noproxy: Proxy megkerülése adott gazdagépekhez

Mit csinál
A --noproxy kapcsoló 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.com minden 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/api

További proxy opciók

--socks5-hostname

SOCKS5 proxy DNS-feloldással a proxyn keresztül

--proxy-cacert

CA-tanúsítvány a HTTPS proxy ellenőrzéséhez

curl --resolve: Egyéni DNS-feloldás

Mit csinál
A --resolve kapcsoló egyéni IP-címet ad meg egy specifikus host:port párhoz, teljesen megkerülve a DNS-keresést. A formátum: host:port:address. Több --resolve bejegyzé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/hosts szerkeszté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/health

curl --connect-to: Kapcsolat átirányítása másik gazdagépre

Mit csinál
A --connect-to kapcsoló átirányítja a TCP-kapcsolatot egy másik host:port párra, miközben megtartja az eredeti URL-t a HTTP-kéréshez (beleértve a Host fejlé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/hosts módosítása nélkül. A --resolve kapcsoló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/health

További hálózati opciók

--local-port

Helyi portszám vagy tartomány beállítása a kapcsolathoz

--interface

Kapcsolat kötése specifikus hálózati interfészhez

--dns-servers

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/status

Kö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/data

Vá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/data

Docker 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/health

SOCKS5 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/status

Gyakran 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.