2015年5月19日火曜日

MacにMySQLインストール後の状態


oracleさんから拾ってきてインストール後の状態

Target

  • MySQL 5.6 
  • MacOSX mavericks

初期状態のメモ

  • 起動 / 停止
    • $ sudo /usr/local/mysql/support-files/mysql.server start
  • scokファイルの場所
    • /tmp/mysql.sock
  • コンソールログイン
    •  /usr/local/mysql/bin/mysql -uroot -S /tmp/mysql.sock
  • mysql home(ソフトリンク)
    • /usr/local/mysql

2015年5月8日金曜日

RestTemplateで使用するTLSのバージョンを指定する

昨日書いたこれは

Java8で使用するTLSのバージョン事情
http://blogger.shase.info/2015/05/java8tls.html

あたりまえだけど、全部に適用されてしまうわけでして。

特定の通信だけ明示的に指定したいケースを考えてみる。

環境

Spring 4.1.x
Java 8.x
apache httpclient 4.4.x

とりあえずfactoryのところ変えてみたよ、って感じ。
SimpleClientHttpRequestFactoryはjavaの設定そのままなので、HttpComponentsClientHttpRequestFactoryを使ってみました。

before

// request factoryの生成
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory() {
};

// factoryになんかセットしたりする


// リクエスト
HttpEntity<String> request = new HttpEntity<String>(requestHeaders);
String url = "https://localhost"
RestTemplate restTemplate = new RestTemplate(factory);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class); 

after

 // request factoryの生成
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
SSLContext sslContext = null;

try {
  sslContext = SSLContext.getInstance("TLSv1.2");
  sslContext.init(null, null, null);
  } catch (Exception e) {
    //todo:
  }

  SSLConnectionSocketFactory sf = new SSLConnectionSocketFactory(sslContext);
  CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sf).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
  factory.setHttpClient(httpClient);

 // リクエスト
 HttpEntity<String> request = new HttpEntity<String>(requestHeaders);
 String url = "https://localhost"
 RestTemplate restTemplate = new RestTemplate(factory);
 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
 

参考にした

http://www.baeldung.com/httpclient-ssl


gistとか貼ったほうが見やすいね。(。-人-。) ゴメーン

2015年5月7日木曜日

Java8で使用するTLSのバージョン事情

Java 7のとき


TLSv1をデフォルトで使用するようになっている。
SSLv3については、例のpoodle事件の影響で、JDK 7u75リリース以降無効になっている。
https://www.java.com/ja/download/faq/release7_changes.xml

TLS1.2も使えるが明示的に有効にしないと使えない。

Java 8


TLSv1.2をデフォルトで利用。
通信相手が対応してなかったりするとTLSv1で通信したりする。

そこをやんごとなき事情があって、1.2を使いたくないとか、そんなときの設定。
プロパティに下記を設定
(起動パラメータの場合はおなじみ、-Dhttps.protocols="" -Djdk.tls.client.protocols="" 記法)

https.protocols=TLSv1,TLSv1.1
jdk.tls.client.protocols=TLSv1,TLSv1.1