curl SSL, TLS & Proxy konfigurationsguide
Konfiguration af HTTPS-certifikater, TLS-versioner, proxyer og brugerdefineret DNS-opløsning i curl er essentielt for sikker API-kommunikation, CI/CD-pipelines og fejlfinding af netværksproblemer. Denne guide dækker alle SSL-, TLS-, proxy- og netværksflag — fra deaktivering af certifikatkontrol med -k til opsætning af mutual TLS med --cert og routing af trafik gennem SOCKS5-proxyer. Hver mulighed inkluderer en klar forklaring, sikkerhedsovervejelser og et kopierklart eksempel.
Hurtig reference for SSL & Proxy flag
Tillad usikre forbindelser — spring al SSL-verifikation over
Verificer servercertifikatet mod en specifik CA-bundle
Angiv et klientcertifikat til mutual TLS-autentificering
Angiv den private nøglefil til klientcertifikatet
Brug TLS version 1.2 eller højere til forbindelsen
Brug TLS version 1.3 eller højere til forbindelsen
Kræv SSL/TLS til forbindelsen (fejl hvis ikke tilgængelig)
Angiv hvilke SSL-ciphers der skal bruges til forbindelsen
Angiv klientcertifikattypen (PEM, DER, ENG, P12)
Fastgør og verificer serverens offentlige nøgle (HPKP-stil)
Rut al trafik gennem den angivne proxyserver
Rut forbindelsen gennem en SOCKS5-proxy
Angiv brugernavn:adgangskode til proxyserveren
Liste over værter, der ikke skal gå gennem proxyen
SOCKS5-proxy med DNS-opløsning gennem proxyen
CA-certifikat til at verificere selve HTTPS-proxyen
Map et specifikt host:port-par til en brugerdefineret IP-adresse
Forbind til et andet host:port end URL'en angiver
Sæt det lokale portnummer eller -interval til forbindelsen
Bind forbindelsen til et specifikt netværksinterface
Brug brugerdefinerede DNS-servere i stedet for systemstandard (c-ares)
curl -k: Ignorer SSL-certifikatfejl
- Hvad det gør
- Flaget
-k(eller--insecure) deaktiverer al SSL/TLS-certifikatverifikation. curl vil ikke kontrollere, om servercertifikatet er underskrevet af en betroet CA, om hostnavnet matcher, eller om certifikatet er udløbet. - Hvornår det bruges
- Brug kun til lokal udvikling med self-signed certifikater eller testmiljoeer. Til staging/produktion, brug
--cacertmed det faktiske CA-certifikat i stedet — det er både sikrere og mere eksplicit.
$ curl -k https://localhost:8443/api/healthBrug aldrig -k i produktionsscripts eller CI/CD-pipelines. Det deaktiverer al certifikatvalidering, hvilket gør din forbindelse sårbar over for man-in-the-middle-angreb. Brug --cacert til at stole på en specifik CA i stedet.
curl --cacert: Brug et brugerdefineret CA-certifikat
- Hvad det gør
- Flaget
--cacertfortaeller curl at verificere serverens SSL-certifikat mod en specifik CA (Certificate Authority) bundle-fil i PEM-format, i stedet for systemets standard trust store. - Hvornår det bruges
- Brug når din server bruger et certifikat underskrevet af en privat eller intern CA, der ikke er i systemets trust store. Dette er almindeligt i virksomhedsmiljoeer, Kubernetes-klynger og Docker-opsætninger med intern PKI.
$ curl --cacert /path/to/corporate-ca.pem https://internal-api.example.com/datacurl --cert: Klientcertifikat (Mutual TLS)
- Hvad det gør
- Flaget
--certgiver et klientsidecertifikat til mutual TLS (mTLS). Ved mTLS præsenterer både serveren og klienten certifikater for at verificere hinandens identitet. Certifikatfilen skal være i PEM- eller PKCS#12-format. - Hvornår det bruges
- Kræves når serveren kræver klientcertifikat-autentificering — almindeligt i bank-API'er, offentlige tjenester, IoT-enhedskommunikation og zero-trust-arkitekturer. Par altid med
--keymedmindre nøglen er indlejret i cert-filen.
$ curl --cert client.pem --key client-key.pem https://mtls-api.example.com/securecurl --key: Klientcertifikatets private nøgle
- Hvad det gør
- Flaget
--keyangiver den private nøglefil, der parres med klientcertifikatet angivet via--cert. Noeglen skal matche certifikatet. Hvis nøglen er adgangskodebeskyttet, vil curl bede om adgangskoden (eller brug--pass). - Hvornår det bruges
- Brug altid sammen med
--cert. Hvis den private nøgle allerede er indlejret i certifikatfilen (almindeligt med PKCS#12 / .p12-filer), kan du udelade--key.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://api.example.com/securecurl --tlsv1.2: Gennemtving minimum TLS 1.2
- Hvad det gør
- Flaget
--tlsv1.2tvinger curl til at bruge TLS 1.2 som den mindste acceptable version til SSL/TLS-håndtrykket. Ældre protokoller (TLS 1.0, 1.1, SSLv3) afvises. - Hvornår det bruges
- Brug til at håndhæve en minimumssikkerhedsstandard. TLS 1.2 kræves til PCI-DSS-overholdelse og understoettes af alle moderne servere. De fleste moderne curl-builds bruger allerede TLS 1.2+ som standard, men dette flag gør det eksplicit.
$ curl --tlsv1.2 -v https://secure.example.com/api 2>&1 | grep 'SSL connection'curl --tlsv1.3: Gennemtving minimum TLS 1.3
- Hvad det gør
- Flaget
--tlsv1.3tvinger curl til at bruge TLS 1.3 — den hurtigste og mest sikre TLS-version. TLS 1.3 eliminerer den ekstra round-trip i håndtrykket (0-RTT-understoettelse) og fjerner alle forældede cipher suites. - Hvornår det bruges
- Brug når du ved, at serveren understoetter TLS 1.3 og du vil have den bedste ydeevne og sikkerhed. Bemærk: TLS 1.3 kræver OpenSSL 1.1.1+ eller et kompatibelt TLS-bibliotek. Ikke alle servere understoetter det endnu.
$ curl --tlsv1.3 https://modern-api.example.com/dataYderligere SSL/TLS-muligheder
Kræv SSL/TLS til forbindelsen (fejl hvis ikke tilgængelig)
Angiv hvilke SSL-ciphers der skal bruges til forbindelsen
Angiv klientcertifikattypen (PEM, DER, ENG, P12)
Fastgør og verificer serverens offentlige nøgle (HPKP-stil)
curl -x: Brug en HTTP/HTTPS-proxy
- Hvad det gør
- Flaget
-x(eller--proxy) ruter al curl-trafik gennem den angivne proxyserver. Formatet er[protocol://]host[:port]. Understoettede proxy-protokoller: HTTP, HTTPS, SOCKS4, SOCKS5. - Hvornår det bruges
- Brug til virksomhedsproxyer, fejlfinding med værktøjer som Fiddler, Charles eller mitmproxy, test af geografiske begrænsninger, eller når direkte internetadgang ikke er tilgængelig. Du kan ogsaa sætte miljoevariablerne
http_proxy/https_proxyi stedet.
$ curl -x http://proxy.example.com:8080 https://api.example.com/datacurl --socks5: Brug en SOCKS5-proxy
- Hvad det gør
- Flaget
--socks5fortaeller curl at bruge en SOCKS5-proxy til TCP-forbindelsen. I modsætning til HTTP-proxyer opererer SOCKS5 på TCP-niveau og kan håndtere enhver protokol — ikke kun HTTP. DNS-opløsning sker lokalt som standard; brug--socks5-hostnametil at opløse DNS gennem proxyen. - Hvornår det bruges
- Brug til SSH-tunneler (
ssh -D), Tor-netværksadgang, eller når proxyen skal håndtere ikke-HTTP-protokoller. SOCKS5 understoetter UDP og kan valgfrit håndtere DNS — hvilket gør den mere fleksibel end HTTP-proxyer.
$ curl --socks5 localhost:1080 https://api.example.com/datacurl --proxy-user: Proxy-autentificering
- Hvad det gør
- Flaget
--proxy-user(eller-U) sender autentificeringsoplysninger til proxyserveren. Formatet eruser:password. Dette er adskilt fra serverautentificering (-u). - Hvornår det bruges
- Kræves når proxyserveren kræver autentificering — almindeligt i virksomheds- og enterprise-netværksmiljoeer. Oplysningerne sendes til proxyen, ikke til målserveren.
$ curl -x http://proxy.corp.com:3128 -U user:pass https://external-api.com/datacurl --noproxy: Omgå proxy for specifikke værter
- Hvad det gør
- Flaget
--noproxyangiver en kommasepareret liste over værter, domaener eller IP-adresser, der skal omgå proxyen og forbinde direkte. Understoetter wildcards:*.example.commatcher alle subdomaener. - Hvornår det bruges
- Brug til at udelukke localhost, interne tjenester eller specifikke domaener fra proxyen. Dette er vigtigt, når en proxy er sat globalt via miljoevariabler, men nogle værter (som lokale tjenester) har brug for direkte adgang. Brug
*for at omgå proxyen for alle værter.
$ curl -x http://proxy:8080 --noproxy "localhost,127.0.0.1,*.internal.com" https://localhost:3000/apiYderligere proxy-muligheder
SOCKS5-proxy med DNS-opløsning gennem proxyen
CA-certifikat til at verificere selve HTTPS-proxyen
curl --resolve: Brugerdefineret DNS-opløsning
- Hvad det gør
- Flaget
--resolvegiver en brugerdefineret IP-adresse for et specifikthost:port-par, der fuldstaendigt omgår DNS-opslag. Formatet erhost:port:address. Flere--resolve-indtastninger kan angives. - Hvornår det bruges
- Essentielt til test foer DNS-propagering, verificering af en specifik backend bag en load balancer, eller lokal udvikling hvor du har brug for et rigtigt hostnavn til SSL-certifikatvalidering. I modsætning til redigering af
/etc/hostser dette per-anmodning og port-specifikt.
$ curl --resolve api.example.com:443:127.0.0.1 https://api.example.com/healthcurl --connect-to: Omdiriger forbindelse til anden vært
- Hvad det gør
- Flaget
--connect-toomdirigerer TCP-forbindelsen til et andethost:port-par, mens den beholder den originale URL til HTTP-anmodningen (inkl.Host-headeren og SNI). Format:HOST1:PORT1:HOST2:PORT2. - Hvornår det bruges
- Brug til at teste en specifik backend-server bag en load balancer uden at ændre DNS eller
/etc/hosts. I modsætning til--resolvemapper dette host:port til host:port (ikke til en IP), hvilket er nyttigt, når maalet ogsaa har et hostnavn.
$ curl --connect-to api.example.com:443:backend1.internal:8443 https://api.example.com/healthYderligere netværksmuligheder
Sæt det lokale portnummer eller -interval til forbindelsen
Bind forbindelsen til et specifikt netværksinterface
Brug brugerdefinerede DNS-servere i stedet for systemstandard (c-ares)
Virkelige SSL & Proxy scenarier
Disse eksempler kombinerer flere flag for at håndtere almindelige sikkerheds- og netværksopgaver i udvikling, CI/CD og produktionsmiljoeer.
Test HTTPS på Localhost
Ved lokal udvikling med et self-signed certifikat, kombiner --resolve med --cacert (eller -k til hurtig test). Dette lader dig bruge et rigtigt hostnavn til korrekt SSL/SNI uden at ændre din hosts-fil.
$ curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/api/statusMutual TLS (klientcertifikat-autentificering)
Nogle API'er kræver, at både server og klient præsenterer certifikater. Angiv --cert, --key og --cacert for at etablere en fuldt verificeret tovejs TLS-forbindelse.
$ curl --cert client.pem --key client-key.pem --cacert server-ca.pem https://mtls-api.example.com/dataVirksomhedsproxy med autentificering
I virksomhedsnetværk med obligatoriske proxyservere, kombiner -x med -U til proxy-credentials. Tilføj --noproxy for at udelukke interne tjenester fra proxyen.
$ curl -x http://proxy.corp.com:3128 -U user:pass --noproxy "*.internal.corp" https://external-api.com/dataDocker-container med intern CA
Når tjenester i Docker bruger certifikater fra en intern CA, monter CA-certifikatet i containeren og henvis til det med --cacert. Dette er sikrere end -k, fordi det stadig validerer certifikatkæden.
$ curl --cacert /etc/ssl/certs/internal-ca.crt https://service.docker.internal:8443/healthSOCKS5-proxy via SSH-tunnel
Opret en SOCKS5-proxy med ssh -D og rut curl-trafik igennem den med --socks5. Dette er nyttigt til at tilgå interne tjenester gennem en bastion-vært.
$ curl --socks5 localhost:1080 https://internal-api.example.com/statusOfte stillede spørgsmål om curl SSL & Proxy
Hvordan springer jeg SSL-certifikatverifikation over i curl?
Brug curl -k URL eller curl --insecure URL. Dette deaktiverer alle certifikatkontroller — udløb, hostnavn-uoverensstemmelse, ubetroet CA. Brug kun til lokal udvikling. Til produktion, brug --cacert med det faktiske CA-certifikat.
Hvordan får jeg curl til at stole på et self-signed certifikat?
Brug curl --cacert /path/to/ca.pem URL for at angive det CA-certifikat, der underskrev dit self-signed cert. Dette er sikrere end -k, fordi det stadig validerer certifikatkæden — og kun stoler på din specifikke CA.
Hvordan tjekker jeg, hvilken TLS-version curl bruger?
Koer curl -v URL og se efter linjen * SSL connection using TLSv1.x / CipherSuite i det detaljerede output. For at gennemtvinge en specifik version, brug --tlsv1.2 eller --tlsv1.3.
Hvad er mutual TLS (mTLS), og hvordan bruger jeg det med curl?
Mutual TLS kræver, at både serveren og klienten præsenterer certifikater. Brug: curl --cert client.pem --key client-key.pem --cacert server-ca.pem URL. Parret --cert/--key autentificerer klienten; --cacert verificerer serveren.
Hvordan bruger jeg curl gennem en HTTP-proxy?
Brug curl -x http://proxy:port URL. Til en HTTPS-proxy: curl -x https://proxy:port URL. Alternativt sæt miljoevariablerne http_proxy og https_proxy — curl opfanger dem automatisk.
Hvordan bruger jeg curl med en SOCKS5-proxy?
Brug curl --socks5 host:port URL til lokal DNS-opløsning eller curl --socks5-hostname host:port URL til at opløse DNS gennem proxyen (vigtigt for privatliv/Tor). Eksempel med SSH-tunnel: ssh -D 1080 user@bastion, derefter curl --socks5 localhost:1080 URL.
Hvordan autentificerer jeg med en proxyserver i curl?
Brug curl -x http://proxy:port -U user:password URL. Flaget -U (eller --proxy-user) sender oplysninger til proxyen. Dette er adskilt fra -u, som autentificerer med målserveren.
Hvordan udelukker jeg bestemte værter fra proxyen i curl?
Brug --noproxy "localhost,127.0.0.1,*.internal.com" eller sæt miljoevariablen NO_PROXY. Understoetter wildcards (*.example.com). Brug --noproxy "*" for at omgå proxyen helt for en enkelt anmodning.
Hvordan tester jeg HTTPS på localhost med curl?
Til hurtig test: curl -k https://localhost:8443/. Til korrekt validering: curl --resolve myapp.local:443:127.0.0.1 --cacert local-ca.pem https://myapp.local/. --resolve-tilgangen lader certifikatets hostnavn matche korrekt.
Hvordan tilsidesætter jeg DNS-opløsning for en specifik vært i curl?
Brug curl --resolve host:port:IP URL. Eksempel: curl --resolve api.example.com:443:192.168.1.100 https://api.example.com/. Dette omgår DNS kun for det host:port-par — ingen grund til at redigere /etc/hosts.
Hvordan løser jeg 'SSL certificate problem: certificate has expired' i curl?
Servercertifikatet er udløbet. Løsninger: (1) Forny certifikatet på serveren, (2) Opdater din CA-bundle: curl --cacert /path/to/updated-ca.pem URL, (3) Kun til test: curl -k URL. Tjek udløb: curl -v URL 2>&1 | grep expire.
Er det sikkert at bruge curl --insecure (-k) i produktion?
Nej. Flaget -k deaktiverer al certifikatvalidering — udløb, hostnavn og tillidskæde. Dette gør din forbindelse sårbar over for man-in-the-middle-angreb. Brug altid --cacert med det specifikke CA-certifikat i produktion og CI/CD-pipelines.