2016-04-01 8 views
6

में प्रमाण पत्र के साथ HTTPS GET कॉल कैसे करें I जावा में Rest-Assured का उपयोग करके एक अंतराल बिंदु पर मुझे एक जीईटी कॉल कैसे कर सकता है जिसके लिए प्रमाण पत्र की आवश्यकता होती है। मेरे पास प्रमाण पत्र .pem प्रारूप है। पीईएम फ़ाइल में प्रमाणपत्र और निजी कुंजी है।पुन: आश्वासित जावा

+0

मैं करने के लिए परिवर्तित करने की कोशिश की jks और RestAssured.keystore (jks, "passwrd") में उपयोग किया जाता है लेकिन यह त्रुटि दे रहा है - PKIX पथ निर्माण विफल: sun.security.provider.certpath.SunCertPathBuilderException: अनुरोधित लक्ष्य – rohitkadam19

+0

पर मान्य प्रमाणीकरण पथ नहीं ढूंढ पा रहा है क्या आप नवीनतम संस्करण का उपयोग कर रहे हैं 2.9.0 का? – Johan

+0

@Johan हां, नवीनतम संस्करण 2.9.0 – rohitkadam19

उत्तर

6

उपयोग कर रहे हैं की जाँच के लिए निम्न कोड के साथ काम मिल गया HTTPs सत्यापन "मेरी समस्या तय की गई:

given().relaxedHTTPSValidation().when().post("https://my_server.com") 
+0

मैं वही बात कर रहा हूं ... क्या आप मुझे बता सकते हैं कि आपको एंडपॉइंट के लिए प्रमाणपत्र कैसे मिला? –

+0

@ हरिशतालंकी मुझे डेवलपर – rohitkadam19

+0

से प्रमाण पत्र प्राप्त हुए हैं, इसके लिए मेरे पास एक समाधान था। लेकिन, मैं वास्तव में आपकी प्रतिक्रिया की सराहना करता हूं। धन्यवाद। –

1

मैं बाकी का आश्वासन दिया करने के लिए नया हूँ, लेकिन मैं जानता हूँ कि ग्राहक प्रमाणीकरण के लिए डिजिटल प्रमाणपत्र का उपयोग कर समस्याओं के इस प्रकार

आराम का आश्वासन दिया डॉक में केवल कॉन्फ़िगर करने के लिए प्रमाण पत्र एक विकल्प है: JKS

RestAssured.config = RestAssured.newConfig().sslConfig(new SSLConfig("/truststore_javanet.jks", "test1234"); 

Convert जेकेएस के लिए आपका पीईएम। इसे पोर्टेकल के साथ खोलें और सुनिश्चित करें कि पासवर्ड सही है और आपके पास प्रमाण पत्र लोड है और सीए रूट के लिए सभी प्रमाणीकरण श्रृंखला है। Portecle एक GUI का उपयोग कमांड लाइन को आसान बनाने के लिए और भी आप JKS

http://portecle.sourceforge.net/ 

यह त्रुटि आती है हमेशा अपने जावा ग्राहक सर्वर प्रमाणपत्र

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

ठीक करने के लिए सबसे आसान तरीका में विश्वास नहीं करते हैं जब बनाने की अनुमति देता इसमें आपके जेडीके कीस्टोर में सर्वर प्रमाणपत्र श्रृंखला शामिल है।

सबसे पहले, अपने ब्राउज़र के साथ एक https कनेक्शन खोलने वाले सर्वर प्रमाण पत्र डाउनलोड करें, उदाहरण के लिए क्रोम के साथ। इससे कोई फर्क नहीं पड़ता कि यह विफल रहता है। टूलबार में ग्रीन लॉक पर क्लिक करें> विवरण> सर्वर प्रमाणित देखें और पीईएम के रूप में डाउनलोड करें। यह सुनिश्चित करने के लिए कि आप सही उपयोग कर रहे हैं, इसे स्वयं डाउनलोड करना सबसे अच्छा है। प्रमाणीकरण श्रृंखला enter image description here

के सभी प्रमाण पत्र डाउनलोड करें, फिर पोर्टेक के साथ जेडीके_एचओएमई/जेआर/lib/सुरक्षा पर जेडीके कैकर्ट खोलें। पासवर्ड 'परिवर्तन' होगा। सर्वर प्रमाण पत्र को 'विश्वसनीय'

के रूप में जोड़ें, अब PKIX पथ निर्माण विफल हो जाएगा।

KeyStore keyStore = null; 
SSLConfig config = null; 

try { 
     keyStore = KeyStore.getInstance("PKCS12"); 
     keyStore.load(
       new FileInputStream("certs/client_cert_and_private.p12"), 
       password.toCharArray()); 

    } catch (Exception ex) { 
     System.out.println("Error while loading keystore >>>>>>>>>"); 
     ex.printStackTrace(); 
    } 

    if (keyStore != null) { 

     org.apache.http.conn.ssl.SSLSocketFactory clientAuthFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, password); 

     // set the config in rest assured 
     config = new SSLConfig().with().sslSocketFactory(clientAuthFactory).and().allowAllHostnames(); 

RestAssured.config = RestAssured.config().sslConfig(config); 
RestAssured.given().when().get("/path").then(); 
+0

मैंने कोशिश की, लेकिन यह कह रहा है "कोई आवश्यक एसएसएल प्रमाण पत्र भेजा नहीं गया"। मैं कीस्टोर बना रहा हूं और इसे RestAssured में जोड़ रहा हूं। – rohitkadam19

+0

एक एसएसएल हैंडशेक में, सर्वर प्रमाण पत्र के सत्यापन के बाद प्रमाण पत्र प्रमाणीकरण अनुरोध OCCURS, इसलिए, पहला चरण पारित किया गया है। क्या आप सुनिश्चित हैं कि आपका जेकेएस प्रमाणपत्र सर्वर द्वारा स्वीकार किया गया है? क्या गलत पासवर्ड या जेकेएस की त्रुटियां नहीं मिली हैं? – pedrofb

0

कोड नीचे उल्लेख सिर्फ काम करता है,

public static void getArtifactsHttps(String args) { 
    String username = "username"; 
    String password1 = "password"; 
    StringBuilder authorization = new StringBuilder(); 
    authorization.append(username).append(":").append(password); 
    String authHeader = "Basic " + Base64.getEncoder().encodeToString(authorization.toString().getBytes()); 


    String response = RestAssured 
      .given() 
      .trustStore("D:\\workspace\\DemoTrust.jks", "DemoTrustKeyStorePassPhrase") 
      .when() 
      .contentType(MediaType.APPLICATION_JSON) 
      .accept(MediaType.APPLICATION_JSON) 
      .header("Authorization", authHeader) 
      .baseUri("https://server.us.oracle.com:55898") 
      .queryParam("name", args) 
      .get("/validendpoint").prettyPrint(); 

    System.out.println("RESPONSE" + response); 
} 
2

मेरे मामले में उपयोग करते हुए "आराम - यदि नहीं, प्रमाण पत्र और JDK आप

0

RestAssured 3.0 का उपयोग करके मैंने @rohitkadam लिया 19 का कोड और ऐसा काम कर दिया गया है: जब आप प्रमाणपत्र के साथ सेवाओं का परीक्षण

@Before 
public void setUp() throws Exception { 
    try { 
     RestAssured.port = port; 
     RestAssured.useRelaxedHTTPSValidation(); 
     RestAssured.config().getSSLConfig().with().keyStore("classpath:keystore.p12", "password"); 
    } catch (Exception ex) { 
     System.out.println("Error while loading keystore >>>>>>>>>"); 
     ex.printStackTrace(); 
    } 
} 
0

आराम का आश्वासन दिया कई मुद्दे के पिछले संस्करणों में के रूप में नवीनतम संस्करण 3.0.7 का उपयोग करें का सामना करना पड़ा दिया है

संबंधित मुद्दे