curl SSL, TLS ja välityspalvelimen konfigurointiopas

HTTPS-varmenteiden, TLS-versioiden, välityspalvelimien ja mukautetun DNS-selvityksen konfigurointi curl-komennossa on välttämätöntä turvalliselle API-viestinnälle, CI/CD-putkille ja verkko-ongelmien vianmääritykselle. Tämä opas kattaa kaikki SSL-, TLS-, välityspalvelin- ja verkkoliput — varmennetarkistusten poistamisesta -k-lipulla paikalliseen kehitykseen, molemminpuolisen TLS:n asettamiseen --cert-lipulla ja liikenteen reitittämiseen SOCKS5-välityspalvelimien kautta. Jokainen vaihtoehto sisältää selkeän selityksen, turvallisuusnäkökohdat ja kopiovalmiin esimerkin.

SSL- ja välityspalvelinlippujen pikaopas

-kSSL/TLS

Salli turvattomat yhteydet — ohita kaikki SSL-tarkistukset

--cacertSSL/TLS

Vahvista palvelinvarmenne tiettyä CA-pakettia vasten

--certSSL/TLS

Anna asiakasvarmenne molemminpuolista TLS-todennusta varten

--keySSL/TLS

Anna asiakasvarmenteen yksityinen avaintiedosto

--tlsv1.2SSL/TLS

Käytä TLS-versiota 1.2 tai uudempaa yhteydelle

--tlsv1.3SSL/TLS

Käytä TLS-versiota 1.3 tai uudempaa yhteydelle

--ssl-reqdSSL/TLS

Vaadi SSL/TLS yhteydelle (epäonnistu, jos ei saatavilla)

--ciphersSSL/TLS

Määritä, mitä SSL-salausmenetelmiä käytetään yhteydelle

--cert-typeSSL/TLS

Määritä asiakasvarmenteen tyyppi (PEM, DER, ENG, P12)

--pinnedpubkeySSL/TLS

Kiinnitä ja vahvista palvelimen julkinen avain (HPKP-tyylisesti)

-xVälityspalvelin

Reititä kaikki liikenne määritetyn välityspalvelimen kautta

--socks5Välityspalvelin

Reititä yhteys SOCKS5-välityspalvelimen kautta

--proxy-userVälityspalvelin

Anna käyttäjänimi:salasana välityspalvelimelle

--noproxyVälityspalvelin

Lista isännistä, joiden ei tulisi kulkea välityspalvelimen kautta

--socks5-hostnameVälityspalvelin

SOCKS5-välityspalvelin DNS-selvityksellä välityspalvelimen kautta

--proxy-cacertVälityspalvelin

CA-varmenne HTTPS-välityspalvelimen itsensä vahvistamiseen

--resolveVerkko

Yhdistä tietty host:port-pari mukautettuun IP-osoitteeseen

Yhdistä eri host:port-pariin kuin URL määrittää

--local-portVerkko

Aseta paikallinen porttinumero tai -alue yhteydelle

--interfaceVerkko

Sido yhteys tiettyyn verkkoliitäntään

--dns-serversVerkko

Käytä mukautettuja DNS-palvelimia järjestelmän oletusarvojen sijaan (c-ares)

curl -k: Ohita SSL-varmennevirheet

Mitä se tekee
-k-lippu (tai --insecure) poistaa käytöstä kaiken SSL/TLS-varmennetarkistuksen. curl ei tarkista, onko palvelinvarmenne luotetun CA:n allekirjoittama, vastaako isäntänimi tai onko varmenne vanhentunut.
Milloin käyttää
Käytä vain paikalliseen kehitykseen itseallekirjoitetuilla varmenteilla tai testiympäristöissä. Staging-/tuotantoympäristöissä käytä sen sijaan --cacert-lippua todellisen CA-varmenteen kanssa — se on sekä turvallisempi että selvempi.
$ curl -k https://localhost:8443/api/health

Älä koskaan käytä -k-lippua tuotantoskripteissä tai CI/CD-putkissa. Se poistaa käytöstä kaiken varmennetarkistuksen, tehden yhteytesi alttiiksi man-in-the-middle-hyökkäyksille. Käytä --cacert-lippua luottaaksesi tiettyyn CA:han.

curl --cacert: Käytä mukautettua CA-varmennetta

Mitä se tekee
--cacert-lippu käskee curlia vahvistamaan palvelimen SSL-varmenne tiettyä CA (Certificate Authority) -pakettitiedostoa vasten PEM-muodossa, järjestelmän oletusluottamusvaraston sijaan.
Milloin käyttää
Käytä, kun palvelimesi käyttää yksityisen tai sisäisen CA:n allekirjoittamaa varmennetta, joka ei ole järjestelmän luottamusvarastossa. Tämä on yleistä yritysympäristöissä, Kubernetes-klustereissa ja Docker-asennuksissa sisäisellä PKI:llä.
$ curl --cacert /path/to/corporate-ca.pem https://internal-api.example.com/data

curl --cert: Asiakasvarmenne (molemminpuolinen TLS)

Mitä se tekee
--cert-lippu tarjoaa asiakaspuolen varmenteen molemminpuolista TLS:ää (mTLS) varten. mTLS:ssä sekä palvelin että asiakas esittävät varmenteet toistensa henkilöllisyyden vahvistamiseksi. Varmennetiedoston tulee olla PEM- tai PKCS#12-muodossa.
Milloin käyttää
Vaaditaan, kun palvelin edellyttää asiakasvarmennetodennusta — yleistä pankki-API:issa, viranomaispalveluissa, IoT-laiteviestinnässä ja zero-trust-arkkitehtuureissa. Yhdistä aina --key-lippuun, ellei avain ole upotettu varmennetiedostoon.
$ curl --cert client.pem --key client-key.pem https://mtls-api.example.com/secure

curl --key: Asiakasvarmenteen yksityinen avain

Mitä se tekee
--key-lippu määrittää yksityisen avaintiedoston, joka kuuluu --cert-lipulla annetun asiakasvarmenteen pariksi. Avaimen on vastattava varmennetta. Jos avain on salasanasuojattu, curl pyytää tunnuslauseen (tai käytä --pass-lippua).
Milloin käyttää
Käytä aina yhdessä --cert-lipun kanssa. Jos yksityinen avain on jo upotettu varmennetiedostoon (yleistä PKCS#12 / .p12 -tiedostoilla), voit jättää --key-lipun pois.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/secure

curl --tlsv1.2: Pakota vähintään TLS 1.2

Mitä se tekee
--tlsv1.2-lippu pakottaa curlin käyttämään TLS 1.2:ta vähimmäisversiona SSL/TLS-kättelylle. Vanhemmat protokollat (TLS 1.0, 1.1, SSLv3) hylätään.
Milloin käyttää
Käytä vähimmäisturvallisuusstandardin täytäntöönpanoon. TLS 1.2 vaaditaan PCI-DSS-yhteensopivuuteen ja kaikki nykyaikaiset palvelimet tukevat sitä. Useimmat nykyaikaiset curl-versiot käyttävät jo oletuksena TLS 1.2+, mutta tämä lippu tekee siitä nimenomaisen.
$ curl --tlsv1.2 -v https://secure.example.com/api 2>&1 | grep 'SSL connection'

curl --tlsv1.3: Pakota vähintään TLS 1.3

Mitä se tekee
--tlsv1.3-lippu pakottaa curlin käyttämään TLS 1.3:a — nopeinta ja turvallisinta TLS-versiota. TLS 1.3 poistaa ylimääräisen kierroksen kättelystä (0-RTT-tuki) ja poistaa kaikki vanhentuneet salausmenetelmät.
Milloin käyttää
Käytä, kun tiedät palvelimen tukevan TLS 1.3:a ja haluat parhaan suorituskyvyn ja turvallisuuden. Huomaa: TLS 1.3 vaatii OpenSSL 1.1.1+ tai yhteensopivan TLS-kirjaston. Kaikki palvelimet eivät vielä tue sitä.
$ curl --tlsv1.3 https://modern-api.example.com/data

Lisä-SSL/TLS-vaihtoehdot

--ssl-reqd

Vaadi SSL/TLS yhteydelle (epäonnistu, jos ei saatavilla)

--ciphers

Määritä, mitä SSL-salausmenetelmiä käytetään yhteydelle

--cert-type

Määritä asiakasvarmenteen tyyppi (PEM, DER, ENG, P12)

--pinnedpubkey

Kiinnitä ja vahvista palvelimen julkinen avain (HPKP-tyylisesti)

curl -x: Käytä HTTP/HTTPS-välityspalvelinta

Mitä se tekee
-x-lippu (tai --proxy) reitittää kaiken curl-liikenteen määritetyn välityspalvelimen kautta. Muoto on [protocol://]host[:port]. Tuetut välityspalvelinprotokollat: HTTP, HTTPS, SOCKS4, SOCKS5.
Milloin käyttää
Käytä yrityksen välityspalvelimille, vianmääritykseen Fiddlerin, Charlesin tai mitmproxyn kaltaisilla työkaluilla, maantieteellisten rajoitusten testaamiseen tai kun suoraa Internet-yhteyttä ei ole käytettävissä. Voit myös asettaa http_proxy / https_proxy -ympäristömuuttujat.
$ curl -x http://proxy.example.com:8080 https://api.example.com/data

curl --socks5: Käytä SOCKS5-välityspalvelinta

Mitä se tekee
--socks5-lippu käskee curlia käyttämään SOCKS5-välityspalvelinta TCP-yhteydelle. Toisin kuin HTTP-välityspalvelimet, SOCKS5 toimii TCP-tasolla ja voi käsitellä mitä tahansa protokollaa — ei vain HTTP:tä. DNS-selvitys tehdään oletuksena paikallisesti; käytä --socks5-hostname-lippua DNS:n selvittämiseen välityspalvelimen kautta.
Milloin käyttää
Käytä SSH-tunneleille (ssh -D), Tor-verkon käytölle tai kun välityspalvelimen on käsiteltävä muita kuin HTTP-protokollia. SOCKS5 tukee UDP:tä ja voi valinnaisesti käsitellä DNS:ää — tehden siitä joustavamman kuin HTTP-välityspalvelimet.
$ curl --socks5 localhost:1080 https://api.example.com/data

curl --proxy-user: Välityspalvelimen todennus

Mitä se tekee
--proxy-user-lippu (tai -U) lähettää todennustiedot välityspalvelimelle. Muoto on user:password. Tämä on erillinen palvelimen todennuksesta (-u).
Milloin käyttää
Vaaditaan, kun välityspalvelin edellyttää todennusta — yleistä yritys- ja organisaatioverkkoympäristöissä. Tunnistetiedot lähetetään välityspalvelimelle, ei kohdepalvelimelle.
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/data

curl --noproxy: Ohita välityspalvelin tietyille isännille

Mitä se tekee
--noproxy-lippu määrittää pilkuilla erotetun listan isännistä, verkkotunnuksista tai IP-osoitteista, joiden tulisi ohittaa välityspalvelin ja yhdistää suoraan. Tukee jokerimerkkejä: *.example.com vastaa kaikkia aliverkkotunnuksia.
Milloin käyttää
Käytä poistaaksesi localhostin, sisäiset palvelut tai tietyt verkkotunnukset välityspalvelimen piiristä. Tämä on tärkeää, kun välityspalvelin on asetettu globaalisti ympäristömuuttujilla, mutta jotkut isännät (kuten paikalliset palvelut) tarvitsevat suoran yhteyden. Käytä * ohittaaksesi välityspalvelimen kaikille isännille.
$ curl -x http://proxy:8080 --noproxy "localhost,127.0.0.1,*.internal.com" https://localhost:3000/api

Lisävälityspalvelinvaihtoehdot

--socks5-hostname

SOCKS5-välityspalvelin DNS-selvityksellä välityspalvelimen kautta

--proxy-cacert

CA-varmenne HTTPS-välityspalvelimen itsensä vahvistamiseen

curl --resolve: Mukautettu DNS-selvitys

Mitä se tekee
--resolve-lippu tarjoaa mukautetun IP-osoitteen tietylle host:port-parille, ohittaen DNS-haun kokonaan. Muoto on host:port:address. Useita --resolve-merkintöjä voidaan antaa.
Milloin käyttää
Välttämätön testaamiseen ennen DNS-levittäytymistä, tietyn taustajärjestelmän tarkistamiseen kuormantasaajan takana tai paikalliseen kehitykseen, jossa tarvitset todellisen isäntänimen SSL-varmenteen vahvistamiseen. Toisin kuin /etc/hosts-tiedoston muokkaaminen, tämä on pyyntökohtainen ja porttikohtainen.
$ curl --resolve api.example.com:443:127.0.0.1 https://api.example.com/health

curl --connect-to: Ohjaa yhteys eri isännälle

Mitä se tekee
--connect-to-lippu ohjaa TCP-yhteyden eri host:port-pariin säilyttäen alkuperäisen URL:n HTTP-pyynnölle (mukaan lukien Host-otsikko ja SNI). Muoto: HOST1:PORT1:HOST2:PORT2.
Milloin käyttää
Käytä testataksesi tiettyä taustapalvelinta kuormantasaajan takana muuttamatta DNS:ää tai /etc/hosts-tiedostoa. Toisin kuin --resolve, tämä yhdistää host:port host:port-pariin (ei IP-osoitteeseen), mikä on hyödyllistä, kun kohteella on myös isäntänimi.
$ curl --connect-to api.example.com:443:backend1.internal:8443 https://api.example.com/health

Lisäverkkovaihtoehdot

--local-port

Aseta paikallinen porttinumero tai -alue yhteydelle

--interface

Sido yhteys tiettyyn verkkoliitäntään

--dns-servers

Käytä mukautettuja DNS-palvelimia järjestelmän oletusarvojen sijaan (c-ares)

Käytännön SSL- ja välityspalvelinskenaariot

Nämä esimerkit yhdistävät useita lippuja yleisten turvallisuus- ja verkkotehtävien käsittelyyn kehitys-, CI/CD- ja tuotantoympäristöissä.

HTTPS:n testaaminen Localhostilla

Kehittäessäsi paikallisesti itseallekirjoitetulla varmenteella, yhdistä --resolve --cacert-lippuun (tai -k nopeaan testaamiseen). Tämä mahdollistaa todellisen isäntänimen käytön oikeaa SSL/SNI:tä varten ilman hosts-tiedoston muokkaamista.

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

Molemminpuolinen TLS (asiakasvarmennetodennus)

Jotkut API:t edellyttävät sekä palvelimen että asiakkaan esittävän varmenteet. Anna --cert, --key ja --cacert luodaksesi täysin vahvistetun kaksisuuntaisen TLS-yhteyden.

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

Yrityksen välityspalvelin todennuksella

Yritysverkkoissa pakollisilla välityspalvelimilla yhdistä -x -U-lippuun välityspalvelimen tunnistetiedoille. Lisää --noproxy sisäisten palveluiden poissulkemiseksi välityspalvelimelta.

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

Docker-kontti sisäisellä CA:lla

Kun Docker-palvelut käyttävät sisäisen CA:n varmenteita, liitä CA-varmenne konttiin ja viittaa siihen --cacert-lipulla. Tämä on turvallisempaa kuin -k, koska se yhä vahvistaa varmenneketjun.

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

SOCKS5-välityspalvelin SSH-tunnelin kautta

Luo SOCKS5-välityspalvelin ssh -D-komennolla ja reititä curl-liikenne sen kautta --socks5-lipulla. Tämä on hyödyllistä sisäisten palveluiden käyttämiseen bastion-isännän kautta.

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

Usein kysytyt kysymykset curlin SSL- ja välityspalvelinasetuksista

Miten ohitan SSL-varmennetarkistuksen curlissa?

Käytä curl -k URL tai curl --insecure URL. Tämä poistaa käytöstä kaikki varmennetarkistukset — vanheneminen, isäntänimen ristiriita, epäluotettu CA. Käytä vain paikalliseen kehitykseen. Tuotannossa käytä --cacert-lippua todellisen CA-varmenteen kanssa.

Miten saan curlin luottamaan itseallekirjoitettuun varmenteeseen?

Käytä curl --cacert /path/to/ca.pem URL määrittääksesi CA-varmenteen, joka allekirjoitti itseallekirjoitetun varmenteesi. Tämä on turvallisempaa kuin -k, koska se yhä vahvistaa varmenneketjun — luottaen vain tiettyyn CA:han.

Miten tarkistan, mitä TLS-versiota curl käyttää?

Suorita curl -v URL ja etsi rivi * SSL connection using TLSv1.x / CipherSuite yksityiskohtaisesta tulosteesta. Pakottaaksesi tietyn version käytä --tlsv1.2 tai --tlsv1.3.

Mikä on molemminpuolinen TLS (mTLS) ja miten käytän sitä curlissa?

Molemminpuolinen TLS vaatii sekä palvelimen että asiakkaan esittävän varmenteet. Käytä: curl --cert client.pem --key client-key.pem --cacert server-ca.pem URL. --cert/--key-pari todentaa asiakkaan; --cacert vahvistaa palvelimen.

Miten käytän curlia HTTP-välityspalvelimen kautta?

Käytä curl -x http://proxy:port URL. HTTPS-välityspalvelimelle: curl -x https://proxy:port URL. Vaihtoehtoisesti aseta http_proxy- ja https_proxy-ympäristömuuttujat — curl tunnistaa ne automaattisesti.

Miten käytän curlia SOCKS5-välityspalvelimen kanssa?

Käytä curl --socks5 host:port URL paikalliseen DNS-selvitykseen tai curl --socks5-hostname host:port URL DNS:n selvittämiseen välityspalvelimen kautta (tärkeää yksityisyydelle/Torille). Esimerkki SSH-tunnelilla: ssh -D 1080 user@bastion, sitten curl --socks5 localhost:1080 URL.

Miten todennun välityspalvelimelle curlissa?

Käytä curl -x http://proxy:port -U user:password URL. -U-lippu (tai --proxy-user) lähettää tunnistetiedot välityspalvelimelle. Tämä on erillinen -u-lipusta, joka todentuu kohdepalvelimelle.

Miten poissulkien tietyt isännät välityspalvelimesta curlissa?

Käytä --noproxy "localhost,127.0.0.1,*.internal.com" tai aseta NO_PROXY-ympäristömuuttuja. Tukee jokerimerkkejä (*.example.com). Käytä --noproxy "*" ohittaaksesi välityspalvelimen kokonaan yksittäiselle pyynnölle.

Miten testaan HTTPS:ää localhostilla curlissa?

Nopeaan testaamiseen: curl -k https://localhost:8443/. Oikeaan vahvistamiseen: curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/. --resolve-lähestymistapa mahdollistaa varmenteen isäntänimen oikean vastaavuuden.

Miten ohitan DNS-selvityksen tietylle isännälle curlissa?

Käytä curl --resolve host:port:IP URL. Esimerkki: curl --resolve api.example.com:443:192.168.1.100 https://api.example.com/. Tämä ohittaa DNS:n vain kyseiselle host:port-parille — ei tarvetta muokata /etc/hosts-tiedostoa.

Miten korjaan 'SSL certificate problem: certificate has expired' -virheen curlissa?

Palvelinvarmenne on vanhentunut. Ratkaisut: (1) Uusi varmenne palvelimella, (2) Päivitä CA-paketti: curl --cacert /path/to/updated-ca.pem URL, (3) Vain testaamiseen: curl -k URL. Tarkista vanheneminen: curl -v URL 2>&1 | grep expire.

Onko curl --insecure (-k) turvallinen tuotannossa?

Ei. -k-lippu poistaa käytöstä kaiken varmennetarkistuksen — vanhenemisen, isäntänimen ja luottamusketjun. Tämä tekee yhteytesi alttiiksi man-in-the-middle-hyökkäyksille. Käytä aina --cacert-lippua tietyn CA-varmenteen kanssa tuotannossa ja CI/CD-putkissa.