2015年6月20日土曜日
Javaでクライアント認証の読込み
Javaでクライアント認証を読込み PKCS#12
証明書は以下を見て作るとよい
http://server-setting.info/centos/apache-ssl-auth-setting.html
下記は、だいたいこんな感じぐらいで
環境を忘れて確認できなくなったので間違っているかも。。。。。
import java.io.FileInputStream;
import java.security.KeyStore;
import java.util.ArrayList;
import java.util.List;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
public class App
{
static final String P12FILE = "cert.p12";
static final char[] PASSWORD = "pass".toCharArray();
private static SSLContext getSslContext() {
// PKCS12ファイル読み込み
KeyManagerFactory keyManagerFactory;
try (FileInputStream inputStream = new FileInputStream(P12FILE)) {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(inputStream, PASSWORD);
keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keyStore, PASSWORD);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
return sslContext;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws Exception {
int socketTimeout = 60000;
int connectionTimeout = 60000;
String userAgent = "My Http Client 0.1";
// request configuration
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectionTimeout)
.setSocketTimeout(socketTimeout)
.build();
// headers
List<Header> headers = new ArrayList<Header>();
headers.add(new BasicHeader("Accept-Charset", "utf-8"));
headers.add(new BasicHeader("Accept-Language", "ja, en;q=0.8"));
headers.add(new BasicHeader("User-Agent", userAgent));
// create client
HttpClient httpClient = HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
.setDefaultHeaders(headers).setSSLContext(getSslContext())
.build();
HttpGet httpGet = new HttpGet("https://mixi.jp/");
HttpResponse response = httpClient.execute(httpGet);
int responseStatus = response.getStatusLine().getStatusCode();
String body = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(body);
}
}
2014年11月3日月曜日
ganymed-ssh2を使ってコマンド実行
ganymed-ssh2を使ってコマンド実行
一回ごとに実行していか確認
引数 host port username password コマンドファイル
コマンドファイル1行を1コマンドとして実行
POM
引数 host port username password コマンドファイル
コマンドファイル1行を1コマンドとして実行
POM
Javach.ethz.ganymed ganymed-ssh2 262
package jp.tuyoyun.metatrader.sshclient;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
public class App
{
private static Scanner scan;
public static void main(String[] args) throws Exception
{
Connection con = new Connection(args[0], Integer.parseInt(args[1]));
con.connect();
con.authenticateWithPassword(args[2], args[3]);
File file = new File(args[4]);
InputStream stream = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF8"));
String line = reader.readLine();
while (line != null) {
System.out.println("\ncommand----------------------------------------------------\n");
System.out.println(line);
System.out.println("-----------------------------------------------------------\n");
boolean confirm = confirm();
if (!confirm) {
scan.close();
reader.close();
stream.close();
con.close();
return;
}
exec(con, line);
line = reader.readLine();
}
scan.close();
reader.close();
stream.close();
con.close();
}
private static boolean confirm() {
System.out.println("execute command? y/n");
scan = new Scanner(System.in);
String confirm = scan.next();
if ("y".equals(confirm)) {
return true;
}
else if ("n".equals(confirm)) {
return false;
} else {
return confirm();
}
}
private static void exec(Connection con, String cmd) throws IOException, InterruptedException {
Session session = con.openSession();
session.execCommand(cmd);
InputStream inputStream = session.getStdout();
readResult(inputStream);
inputStream = session.getStderr();
readResult(inputStream);
session.close();
}
private static void readResult(InputStream inputStream) throws UnsupportedEncodingException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF8"));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close();
inputStream.close();
}
}
2013年11月2日土曜日
2013年7月13日土曜日
java スタックなど
java 問題解析に
jstack でスレッドダンプを取る
http://aoking.hatenablog.jp/entry/20120629/1340965676
サーバから応答がない!そんな時はスレッドダンプです
http://advpro.co.jp/Devlop/?p=365
あなたの知らないJDKの便利ツールたち
http://www.atmarkit.co.jp/fjava/column/andoh/andoh43.html
JavaVMのメモリ領域について
http://d.hatena.ne.jp/tanakakns/20120508/1336467306
jstack でスレッドダンプを取る
http://aoking.hatenablog.jp/entry/20120629/1340965676
サーバから応答がない!そんな時はスレッドダンプです
http://advpro.co.jp/Devlop/?p=365
あなたの知らないJDKの便利ツールたち
http://www.atmarkit.co.jp/fjava/column/andoh/andoh43.html
JavaVMのメモリ領域について
http://d.hatena.ne.jp/tanakakns/20120508/1336467306
2013年6月25日火曜日
InstallCertでJREに証明書インポート
InstallCertの使い方がわかったのでちょっと書いておく
InstallCert.java
http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java
<使い方>
java InstallCert [ホスト]:[ポート]
実行すると%JAVA_HOME%/lib/security/jssecacerts を読み込む
なければcacertsを読み込み
ホストに接続して、必要な証明書を追加したものを実行ディレクトリにjssecacertsというファイル名で
出力してくれる
なので、jssecacertsを%JAVA_HOME%/lib/security/cacertsというファイルと置き換えるとよい
これは色々使えるかも?
InstallCert.java
http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java
<使い方>
java InstallCert [ホスト]:[ポート]
実行すると%JAVA_HOME%/lib/security/jssecacerts を読み込む
なければcacertsを読み込み
ホストに接続して、必要な証明書を追加したものを実行ディレクトリにjssecacertsというファイル名で
出力してくれる
なので、jssecacertsを%JAVA_HOME%/lib/security/cacertsというファイルと置き換えるとよい
これは色々使えるかも?
登録:
投稿 (Atom)