Import the public key

2:07 PM 0 Comments

공개키를 keystore에 임포트하려면 keytool 을 사용하면 된다. Java를 설치하면 같이 설치된다.

$JAVA_HOME/bin/keytool

ex)
C:\>keytool -import -file c:\myserver.cert -keystore c:\taeho.keystore -alias taeho.com
Enter keystore password:

위의 예제에서는 다운로드 받은 공개키를 (openSSL 툴)을 c:\taeho.keystore 에 등록한다. 공개키 임포트시 keystore 등록시 입력한 비밀번호를 입력해야 한다.

Obtain the server's public key

1:27 PM 0 Comments

OpenSSL 툴을 이용하면 쉽게 서버의 public certificate을 구할 수 있다.


1. Download openssl

Windows version: http://gnuwin32.sourceforge.net/packages/openssl.htm

2. Run openssl

OpenSSL>s_client connect:SEVERADDRESS:SERVERSSLPORT

ex) Getting google's public certificate

OpenSSL> s_client -connect www.google.com:443
Loading 'screen' into random state - done
CONNECTED(00000140)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQPI06ZO4Y3RtzC6GS7viYGzANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wODA1MDIxNzAyNTVaFw0w
OTA1MDIxNzAyNTVaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRcw
FQYDVQQDEw53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEAmxntXaVWr0lm23n9whx4Tk8RpYqs4pTu4+JLwAMlp5nMZeHslK6u8KeZvBDX
7YcwR81Q+a/T0/QLjUeKLuLOU5uRmX8eXPkb1umTZ+NK+M/EjAxo0ZdURw4KJDCn
gpSu3q4/v7oUxviykI42reHQvhaas15yOEnadKE//9KHge0CAwEAAaOB5zCB5DAo
BgNVHSUEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATA2BgNVHR8E
LzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlU0dDQ0EuY3Js
MHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3Rl
LmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3dGUuY29tL3JlcG9zaXRv
cnkvVGhhd3RlX1NHQ19DQS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUF
AAOBgQAxCmyinulUGRZomZHWQ8trtMxszLD78e6BvwArb1ASxq8CKjbBKN7FTFYg
bfU9QrkYgSCy3Vdd674yhFBFUW7N5C4qOIifUu0o//yNV7WtZK5NDg7ZPay4/mZM
FY9EUvp8PATtfzdhBP7V6bmwnv6lEWnJY9ZGgW8A2HIvgjdEwQ==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1765 bytes and written 334 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : TLSv1
Cipher : RC4-SHA
Session-ID: 44C6971802A59A6EC3E241FDEEDA17E988F8CCB47224BB008A69CCE9E7F3716C

Session-ID-ctx:
Master-Key: E3EDDDEBD18BF08E720E52F4A484191886C562938B78A55CB380D89ECAECEC71
9A28951EA9D9CEA42BFB64CA8FF5268A
Key-Arg : None
Start Time: 1223919074
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
read:errno=0

Axis2 Https Client

12:50 PM 0 Comments

FooStub fooStub = new FooStub("https://www.cnn.com ");

// Enabel SSL via JSSE
System.setProperty("javax.net.ssl.trustStore",
"path to client trust store");
System.setProperty("javax.net.ssl.trustStorePassword","your password");

fooStub.invokeWebServiceMethod();

Jakarta Commons HttpComponents

11:49 AM 0 Comments

HTTP (Hyper-Text Transfer Protocol) 은 오늘날 인터넷을 사용하는데 아마도 가장 중요한 프로토콜이라는데 이의를 달 사람은 많이 않을 것이다.

Jakarta Commons 의 HttpComponents 는 HTTP 에서 동작하는 서버나 클라이언트 어플리케이션 개발의 도움을 주도록 디자인 되었다. 예를들면 웹브라우저, 웹스파이더, HTTP 프락시, 웹서비스 전송 라이브러리 등등.

1. HttpCore
HttpCore는 HTTP 프로토콜의 가장 기본이 되는 부분을 담당하는데 아래와 같이 두가지 모듈로 구성되어 있다.

1.1 HttpCore base module
HttpCore은 Java classic (blocking) I/O model 방식으로 구현된 모듈로 HttpCore의 Public API를 제공한다. Java 1.3 이상 필요.

1.2 HttpCore NIO extensions
Event driven, non-blocking I/O (NIO) model 방식으로 구현된 확장된 모듈이다. HttpCore NIO extensions은 Java 5.0 이상 필요. 이 방식은 수많은 동시 Http 접속 연결 요청을 보다 효율적으로 처리할 수 있게 해준다.

2. HttpClient
HttpClient는 클라이언트 인증과 Http state 관리, Connection 관리, HTTP/1.1 호환 HTTP agent 개발등등을 지원한다. Jakarta Commons HttpClient 3.x 에 대한 후속 개발 연장선 상에 있다.

2.1 HttpClient base module
HttpCore기반 위에 만들어진 HTTP/1.1 compliant agent.

2.2 HttpMime module
mime4j 라이브러리를 연장해서 만들어졌다.


public class HttpClientTest
{
public static void main(String[] args)
{
try
{
HttpClient httpclient = new HttpClient();
GetMethod httpget = new GetMethod("https://www.verisign.com/");
try
{
httpclient.executeMethod(httpget);
System.out.println(httpget.getStatusLine());
}
finally
{
httpget.releaseConnection();
}
} catch (Exception e) {
e.printStackTrace();
}
}

오라클 버전 확인하는 쿼리

5:49 PM 0 Comments

SELECT * FROM v$version WHERE banner LIKE 'Oracle%';