■ プロキシサーバ経由で接続
プロキシサーバ経由で接続するためのプロパティ
`# | `プロパティ | `説明 | `備考 |
1 | http.proxyHost | プロキシサーバのホスト名またはIPアドレスを指定 | - |
2 | http.proxyPort | プロキシサーバのポート番号 | デフォルト値:80 |
3 | https.proxyHost | SSLプロトコルによる接続で使用するプロキシサーバのホスト名またはIPアドレスを指定 | - |
4 | https.proxyPort | SSLプロトコルによる接続でプロキシサーバのポート番号 | デフォルト値:443 |
5 | http.nonProxyHosts | プロキシを省略して、直接到達するホストのリスト | ホストを複数指定する場合「|」で区切って設定 |
6 | java.net.useSystemProxies | SSLプロトコルによる接続でプロキシサーバのポート番号 | デフォルト値:false |
実装
その1:起動パラメータからの設定java -Djava.net.useSystemProxies=true -Dhttp.proxyHost=XXX.XXX.XXX.XXX -Dhttp.proxyPort=8080 -Dhttps.proxyHost=XXX.XXX.XXX.XXX -Dhttps.proxyPort=8443 <アプリケーション>その2:ソースコードからの設定
System.setProperty("java.net.useSystemProxies", "true"); System.setProperty("http.proxyHost", "XXX.XXX.XXX.XXX"); System.setProperty("http.proxyPort", "8080"); System.setProperty("https.proxyHost", "XXX.XXX.XXX.XXX"); System.setProperty("https.proxyPort", "8443");その3:環境変数「http_proxy」「https_proxy」を利用する(Linux Only)
http://int128.hatenablog.com/entry/20120611/1339416709
// Proxyを使うように「useSystemProxies=true」 java -Djava.net.useSystemProxies=true <アプリケーション> 【環境変数】 http_proxy='http://XXX.XXX.XXX.XXX:8080' https_proxy='http://XXX.XXX.XXX.XXX:8443' 環境変数の設定については、以下の関連記事を参照のことhttps://blogs.yahoo.co.jp/dk521123/35146553.html
■ 認証
実装
ソースコードからの設定Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("admin", "password".toCharArray()); } });
補足1:環境変数「http_proxy」「https_proxy」について
* 以下を行ったが、例外「IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"」が発生でうまくいかずhttp_proxy='http://username:password@XXX.XXX.XXX.XXX:8080' https_proxy='http://username:password@XXX.XXX.XXX.XXX:8443'
補足2:プロパティ変数「http.proxyUser」「http.proxyPassword」について
// 以下は意味なし System.setProperty("http.proxyUser", "admin"); System.setProperty("http.proxyPassword", "password");
■ SSLプロキシ
SSLプロキシの証明書(公開鍵)をキーストアにインポートするだけ。https://blogs.yahoo.co.jp/dk521123/36518468.html
より sudo keytool -import -trustcacerts -alias ssl_proxy -storepass changeit -file cacert.pem -keystore %JAVA_HOME%/jre/lib/security/cacerts
構成
+-----------+ +-----------+ +-----------+ +-----------+ | | http | | https | | https | | |Java appli |--------| SSL Proxy |-------| Internet |-------| Any (SSL) | | | 3128 | | 443 | | 443 | Server | +-----------+ +-----------+ +-----------+ +-----------+
参考文献
公式サイト
http://docs.oracle.com/javase/jp/7/technotes/guides/net/proxies.html認証について
http://docs.oracle.com/javase/jp/7/technotes/guides/net/http-auth.html
一般サイト
http://glasses-se-note.com/java-proxy/http://atomic.jpn.ph/prog/net/proxy.html
http://an1106na.hatenablog.com/entry/2016/09/15/131255
今後役に立ちそうなサイト
http://qiita.com/kaakaa_hoe/items/d4fb11a3af035a287972