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
Salli turvattomat yhteydet — ohita kaikki SSL-tarkistukset
Vahvista palvelinvarmenne tiettyä CA-pakettia vasten
Anna asiakasvarmenne molemminpuolista TLS-todennusta varten
Anna asiakasvarmenteen yksityinen avaintiedosto
Käytä TLS-versiota 1.2 tai uudempaa yhteydelle
Käytä TLS-versiota 1.3 tai uudempaa yhteydelle
Vaadi SSL/TLS yhteydelle (epäonnistu, jos ei saatavilla)
Määritä, mitä SSL-salausmenetelmiä käytetään yhteydelle
Määritä asiakasvarmenteen tyyppi (PEM, DER, ENG, P12)
Kiinnitä ja vahvista palvelimen julkinen avain (HPKP-tyylisesti)
Reititä kaikki liikenne määritetyn välityspalvelimen kautta
Reititä yhteys SOCKS5-välityspalvelimen kautta
Anna käyttäjänimi:salasana välityspalvelimelle
Lista isännistä, joiden ei tulisi kulkea välityspalvelimen kautta
SOCKS5-välityspalvelin DNS-selvityksellä välityspalvelimen kautta
CA-varmenne HTTPS-välityspalvelimen itsensä vahvistamiseen
Yhdistä tietty host:port-pari mukautettuun IP-osoitteeseen
Yhdistä eri host:port-pariin kuin URL määrittää
Aseta paikallinen porttinumero tai -alue yhteydelle
Sido yhteys tiettyyn verkkoliitäntään
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/datacurl --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/securecurl --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/securecurl --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/dataLisä-SSL/TLS-vaihtoehdot
Vaadi SSL/TLS yhteydelle (epäonnistu, jos ei saatavilla)
Määritä, mitä SSL-salausmenetelmiä käytetään yhteydelle
Määritä asiakasvarmenteen tyyppi (PEM, DER, ENG, P12)
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/datacurl --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/datacurl --proxy-user: Välityspalvelimen todennus
- Mitä se tekee
--proxy-user-lippu (tai-U) lähettää todennustiedot välityspalvelimelle. Muoto onuser: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/datacurl --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.comvastaa 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/apiLisävälityspalvelinvaihtoehdot
SOCKS5-välityspalvelin DNS-selvityksellä välityspalvelimen kautta
CA-varmenne HTTPS-välityspalvelimen itsensä vahvistamiseen
curl --resolve: Mukautettu DNS-selvitys
- Mitä se tekee
--resolve-lippu tarjoaa mukautetun IP-osoitteen tietyllehost:port-parille, ohittaen DNS-haun kokonaan. Muoto onhost: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/healthcurl --connect-to: Ohjaa yhteys eri isännälle
- Mitä se tekee
--connect-to-lippu ohjaa TCP-yhteyden erihost:port-pariin säilyttäen alkuperäisen URL:n HTTP-pyynnölle (mukaan lukienHost-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/healthLisäverkkovaihtoehdot
Aseta paikallinen porttinumero tai -alue yhteydelle
Sido yhteys tiettyyn verkkoliitäntään
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/statusMolemminpuolinen 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/dataYrityksen 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/dataDocker-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/healthSOCKS5-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/statusUsein 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.