# CURL

Het softwareproject cURL (uitgesproken als 'curl') biedt een bibliotheek en command-linetool voor het downloaden of uploaden van gegevens met verschillende protocollen.
Het cURL-project produceert twee producten: libcurl en cURL. Het werd voor het eerst uitgebracht in 1997. De naam staat voor "Client URL". De oorspronkelijke auteur en lead developer is de Zweedse ontwikkelaar Daniel Stenberg.

## libcurl

Libcurl is een bibliotheek voor clients, bedoeld voor gegevensoverdracht via een URL, ondersteunende cookies, DICT, FTP, FTPS, Gopher, HTTP (met HTTP/2-ondersteuning), proxyservers, HTTPS, IMAP, Kerberos, LDAP, POP3, RTSP, SCP en SMTP. De bibliotheek ondersteunt het URI-bestandsschema, SFTP, Telnet, TFTP, bestandsoverdrachtpauzering en -hervatting (tijdens een download), uploaden met FTP, HTTP-formulier-gebaseerde upload, HTTPS-certificaten, LDAPS, proxy's en gebruiker-plus-wachtwoordverificatie.
De libcurl-bibliotheek is portable; het bouwt en werkt identiek op vele platforms, waaronder AIX, AmigaOS, Android, BeOS, BlackBerry Tablet OS en BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, Hurd, iOS, IRIX, Linux, macOS, NetBSD, NetWare, OpenBSD, OS/2, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare en Windows.
De bibliotheek is vrij, thread-safe en IPv6-compatibel. De taalbindings zijn beschikbaar voor meer dan 40 programmeertalen, waaronder C/C++, Java, PHP en Python.
De libcurl-bibliotheek kan axTLS, GnuTLS, mbed TLS, NSS, QSOSSL op IBM i, SChannel op Windows, Secure Transport op macOS en iOS, SSL/TLS via OpenSSL en wolfSSL.

## cURL

CURL is een command-line programma voor het verkrijgen of verzenden van bestanden met behulp van URL-syntaxis.
Aangezien cURL libcurl gebruikt, ondersteunt het een reeks veelgebruikte internetprotocollen, waaronder (momenteel) HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, FILE, IMAP, POP3, SMTP en RTSP (de laatste vier alleen in versies nieuwer dan 7.20.0 of 9 februari 2010).
CURL ondersteunt HTTPS en voert standaard SSL-certificaatverificatie uit wanneer een veilig protocol zoals HTTPS wordt gespecificeerd. Wanneer cURL verbinding maakt met een externe server via HTTPS, zal het het certificaat van de externe server verkrijgen en vervolgens de geldigheid van de externe server vergelijken met zijn CA-certificaat om er zeker van te zijn dat de externe server de server is die hij beweert te zijn.
Sommige cURL-pakketten zijn gebundeld met een CA-certificaatopslagbestand. Er zijn verschillende opties om een CA-certificaat te specificeren, zoals --cacert en --capath. De optie --cacert kan gebruikt worden om de locatie van het CA-certificaatopslagbestand te specificeren. Op Windows zal cURL, als er geen CA-certificaatbestand is gespecificeerd, zoeken naar een CA-certificaatbestand met de naam "curl-ca-bundle.crt" in de volgende volgorde:
* Directory waar het cURL-programma zich bevindt.
* Huidige werkmap.
* Windows-systeemdirectory.
* Windows-directory.
* Directory's gespecificeerd in de %PATH%-omgevingsvariabelen.
CURL geeft een foutmelding als de externe server een zelfondertekend certificaat gebruikt of als het certificaat van de externe server niet is ondertekend door een CA die in het CA-certbestand staat vermeld. De optie -k of --insecure kan worden gebruikt om certificaatverificatie over te slaan. Als de externe server wordt vertrouwd, kan het CA-certificaat van de externe server worden toegevoegd aan het CA-certificaatopslagbestand.