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:3128
Feel 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>