2017-01-31 79 views
0

我在Java中發出需要SSL證書和私鑰組合的POST請求。我已經看過Java密鑰,並使用兩個命令創建從.KEY和.cert文件既是.jks文件:Java - 使用證書和私鑰生成HTTP POST請求

winpty openssl pkcs12 -export -in certificate.crt -inkey privatekey.key -out abc.p12 

keytool -importkeystore -srckeystore abc.p12 -srcstoretype PKCS12 -destkeystore abc.jks -deststoretype JKS

但這個失敗,403的異常請求。實際上,我想在java中執行以下Javascript函數:

function cardBalance(intent, session, response) { 
    var options = { 
     key: fs.readFileSync('privatekey.key'), 
     cert: fs.readFileSync('certificate.crt'), 
     host: "blah.blah.blah.com', 
     path: '/abc/def/ghi/jkl/mno/pqr/creditcardsummary', 
     method: 'POST', 
     headers: { 
      'Authorization': 'Bearer ' + session.user.accessToken, 
      'Content-Type': 'application/json', 
      'Version': '1.1.0', 
      'zId': '1234', 
      'aId': '123456789', 
      'bId': 'bId', 
      'AppName': 'AppName' 
     } 
    }; 

    var postData = JSON.stringify({ 
     'acctnum': '00002600452999820832' 
    }); 

    console.log(options); 

    var req = https.request(options, function (res) { 
     console.log('Request Credit Card Balance'); 
     var data = ''; 

     res.on('data', function (chunk) { 
      data += chunk; 
     }); 

     res.on('end', function() { 
      data = JSON.parse(data); 
      console.log(data); 

      if (data.CreditCardSummary.status === 'SUCCESS') { 
       var balance = data.balance; 
       console.log('Balance: ' + balance); 
       var speechOutput = 'The current balance is $' + balance; 
       response.tell(speechOutput); 
      } else { 
       response.tell('There was a problem getting your card balance.'); 
      } 

     }); 
    }); 

    req.on('error', function (e) { 
     console.log('An Error Occurred when calling the Gateway. ' + e); 
     response.tell(e); 
    }); 

    req.write(postData); 
    req.end(); 
} 
+1

向我們展示一個[mcve],一個具體的錯誤,以及到目前爲止您嘗試解決的問題。 –

+0

對不起,沒有提供足夠的細節。還是要謝謝你的幫助 – jtmickde

回答

0

我想通了,我想爲其他人提供參考。我必須將我的.key和.crt文件轉換爲.p12文件,然後將其轉換爲.jks文件。 我是通過以下鏈接在這裏做到的importing an existing x509 certificate and private key in Java keystore to use in ssl 一旦我的密鑰庫正確設置,我在java How to request a URL that requires a client certificate for authentication後面跟着這個頁面。我出錯的地方是我沒有正確設置我的JVM參數。我不得不把這些javax.net.ssl.keyStorejavax.net.ssl.keyStorePassword。一旦我將它添加到我的JVM中,它就可以完美運行。

相關問題