様々な理由で、Proxyを通してコマンドを使わなきゃいけない人のためのメモ。
WindowsでもLinuxでも同じ。
これで、だいたいのコマンドは行ける。
# cmd.exe
set HTTPS_PROXY=https://proxy:port
set HTTP_PROXY=http://proxy:port
set FTP_PROXY=ftp://proxy:port
ただ、これだとProxyを必ず通ってしまうので、通したく無い相手は NO_PROXY
に設定する。
範囲指定はできないので、変数展開を使って、それっぽくやる。
# bash
no_proxy="$(echo 192.168.1.{10,11})"
no_proxy+=" $(echo 192.168.2.{41,42,43})"
export NO_PROXY="127.0.0.1,localhost,${no_proxy// /,}"
Linuxはいつものところに置けば、ほとんどのコマンドは参照してくれる。
Windowsの証明書ストアは参照してくれないので、コマンドごとに回避する必要がある。
# ubuntu
cp proxy_cacert.crt /usr/share/ca-certificates
update-ca-certificates
ただ、見てくれない環境もあったので、mozillaフォルダ等に直接置いて回避する場合もある。
# busybox
cp proxy_cacert.crt /usr/local/share/ca-certificates/mozilla/
update-ca-certificates
設定ファイルに書けば、見てくれるコマンドもある。
面倒なので、証明書を無視するように設定する。
# .curlrc
proxy="http://proxy:port"
insecure
#.npmrc
proxy="http://proxy:port"
strict-ssl=false
#.gitconfig
[http]
proxy = http://proxy:port
sslVerify = false
[url "https://"]
insteadOf = git://
設定ファイルに書かなくても、コマンドオプションで設定できる物もある。
環境を汚さずに使うことができる。
curl -k https://target_url
aws --no-verify options...
RubyGems の場合、環境変数でCA証明書(PEM形式)を指定することができる。
# cmd.exe
set SSL_CERT_FILE=C:/CertDirectory/path/proxy_cacert.pem
Logstash の Output を Proxy 経由でやりたい場合は、設定する必要がある。
output {
elasticsearch {
hosts => ["http://elasticsearch_server_path:port"]
index => "elasticsearch-index"
proxy => "http://proxy:port"
}
}
※ cacert
の設定もあるけど、証明書をうまく読み込んでくれなかった・・・