How to make wget, curl and Maven download behind an NTLM Proxy
Working on CentOS, behind an NTLM proxy:
- yum can deal without problem with a NTLM Proxy
- wget, curl and Maven cannot
"cntlm" is a NTLM client for proxies requiring NTLM authentication.
How it works
- Install "cntlm"
- Configure "cntlm"
- by giving it your credentials
- by giving it the NTLM Proxy
- Start "cntlm" deamon (it listens to "127.0.0.1:3128")
- Configure wget, curl and Maven to use "cntlm" instead of using directly the NTLM Proxy
Configure CNTLM
After installing cntlm, the configuration file is in "cntlm.conf".You must have your domain (in the Windows meaning), proxy login and proxy password.
Mine are respectively: rktmb.org, mihamina, 1234abcd (yes, just for the example)
You must have you NTLM Proxy Hostnama or IP and port
Mine are respectively: prx.rktmb.org, 8080
You have to make cntlm format them to make cntlm job easy by
cntlm -H -d rktmb.org -u mihamina
This will output something like:
PassLM D6F1CF1F55CFC61D2C114A2E7 PassNT B649D7C5ECEFD7A189C189763 PassNTLMv2 F9E6B8689C0B5CE6194605D73
Thanks to https://gist.github.com/lpf23/d3c4e1ef158c7fb4a909
The final "cntlm.conf" file looks like:
Username mihamina Domain rktmb.org Password 1234abcd PassLM D6F1CF1F55CFC61D2C114A2E7 PassNT B649D7C5ECEFD7A189C189763 PassNTLMv2 F9E6B8689C0B5CE6194605D73 Proxy prx.rktmb.org:8080
Configuring wget to use cntlm
You have to set the following environment variables:
export https_proxy=${http_proxy} export http_proxy=http://localhost:3128Feel free to put it into ".bashrc" or ".bash_profile", depending on your distribution.
Configuring Maven to use cntlm
In "~/.m2/settings.xml"
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> <proxies> <proxy> <id>rktmb-proxy</id> <active>true</active> <protocol>http</protocol> <host>127.0.0.1</host> <port>3128</port> </proxy> </proxies> </settings>