java.security.KeyException

로컬에서는 정상적으로 동작을 하는데 서버에서는 아래와 같이 익셉션이 발생한다..
로컬은 오라클jdk를 사용하고 서버는 openjdk를 사용하고 있었다.
오라클에서 받은 jdk가 아닌 openjdk를 사용하고 계신분이 아래에 애러가 발생하신다면 jdk변경없이 아래와 같이 해결할 수 있다.

환경
CentOS release 6.5 (Final)
jave 1.7 (java-1.7.0_99-openjdk)

기본 코드

 import java.net.HttpURLConnection;

import java.net.URL;

public class Bla{
  public static void main(String[] args) throws Exception {
    System.out.print("Hello\n");
    String url=https://xxx.com/www?xxx=sss&aaa=ccc;
    try{
      HttpClient client = new HttpClient(httpClientConst.connMgr);
   PostMethod method = new PostMethod(url);
      
    int returnCode = client.executeMethod(method);
       if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {       
          return result;
       }
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream() ;
    byte[] byteArray = new byte[1024];
    
    int count = 0 ;
    while((count = method.getResponseBodyAsStream().read(byteArray, 0, byteArray.length)) > 0){
     outputStream.write(byteArray, 0, count) ;
    }
    String responseStr = new String(outputStream.toByteArray(), "utf-8");
    }
    catch (Exception e){
      e.printStackTrace();
      System.out.print("Error\n");
    }
    System.out.print("About to loop\n");
    while(true){Thread.currentThread().sleep(1000);} //Crudest debug ever
  }
}


애러메세지

javax.net.ssl.SSLException: java.security.ProviderException: java.security.KeyException

        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1874)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1857)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1783)
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:127)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
        at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:825)
        at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
$HttpConnectionAdapter.flushRequestOutputStream(MultiThreadedHttpConnectionManager.java:1543)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1975)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:393)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:168)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
        at com.GifTing.gw.media.business.BuyHistStatusBusiness.getGalaxiaPinInfo(BuyHistStatusBusiness.java:904)
        at com.GifTing.gw.media.business.BuyHistStatusBusiness.OutPinStatus(BuyHistStatusBusiness.java:384)
        at com.GifTing.gw.media.action.OutPinAction.pinStatus(OutPinAction.java:192)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
        at com.dki.asf.action.DispatchAction.execute(DispatchAction.java:42)
        at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
        at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
        at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
        at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
        at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
        at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
        at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at com.GifTing.common.filter.ForbidFilter.doFilter(ForbidFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at com.dki.asf.web.filter.EncodingFilter.doFilter(EncodingFilter.java:44)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.ProviderException: java.security.KeyException
        at sun.security.ec.ECKeyPairGenerator.generateKeyPair(ECKeyPairGenerator.java:146)
        at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:704)
        at sun.security.ssl.ECDHCrypt.<init>(ECDHCrypt.java:78)
        at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:717)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:278)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1035)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1344)
        at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:721)
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
        ... 54 more
Caused by: java.security.KeyException
        at sun.security.ec.ECKeyPairGenerator.generateECKeyPair(Native Method)
        at sun.security.ec.ECKeyPairGenerator.generateKeyPair(ECKeyPairGenerator.java:126)


해결
openjdk 1.7에서만 문제가 발행하였다.
1.8로 업데이트를 하면 문제가 발생하지 않는다.
하지만 해당서버에서 다른 서비스도 돌아가기떄문에 버젼업을 하기 애매하여
라이브러리를 추가하는 작업을 하였다.

[root@WAS-SERVER-01 bin]# yum provides /usr/lib64/libssl3.so

[root@WAS-SERVER-01 lib64]# sudo yum upgrade nss