2014-10-23 3 views
0

나는이 방법으로 http 연결을 사용하여 게시합니다. sun.security.provider.certpath.SunCertPathBuilderException : 자체 서명 된 웹 사이트에 연결할 때 요청한 대상에 대한 유효한 인증 경로를 찾을 수 없습니다. 인증서를 어떻게 무시합니까?Grails 자체 서명 된 인증서에 대한 http 연결

def post(url, jsonData){ 
    url = new URL(url) 
    def connection = url.openConnection() 
    connection.setRequestMethod("POST") 
    connection.setRequestProperty("Content-Type", "application/json"); 
    connection.doOutput = true 
    def writer = new OutputStreamWriter(connection.outputStream) 
    writer.write(jsonData) 
    writer.flush() 
    writer.close() 
    connection.connect() 
    def resp = connection.content.text 
    resp 
} 

답변

1

ssl 확인을 사용하지 않고 요청 전에 호출하는 기능을 만들어야합니다.

이것은 ssl 확인을 사용하지 않도록 설정하는 데 필요한 기능의 예입니다.

void disableSslVerification() throws NoSuchAlgorithmException, KeyManagementException{ 
     // Create a trust manager that does not validate certificate chains 
     TrustManager[] trustAllCerts = [ 
      new X509TrustManager(){ 
       public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
        return null 
       } 
       public void checkClientTrusted(X509Certificate[] certs, String authType) { 

       } 
       public void checkServerTrusted(X509Certificate[] certs, String authType) { 

       } 
      } 
     ] 

     // Install the all-trusting trust manager 
     SSLContext sc = SSLContext.getInstance("SSL"); 
     sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
     HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
     // Create all-trusting host name verifier 
     HostnameVerifier allHostsValid = new HostnameVerifier() { 
        public boolean verify(String hostname, SSLSession sslSession) { 
         return true; 
        } 
       }; 
     // Install the all-trusting host verifier 
     HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); 
    } 

은 그럼 당신은

def post(url, jsonData){ 
     disableSslVerification() 
     url = new URL(url) 
     ... 
+1

감사를 할 필요가있다. 내 grails 애플 리케이션을 위해, 나는 이것을 DEV Bootstrap.groovy에 넣었다. 일하는 것 같습니다. – PaulMurrayCbr