2017-04-18 5 views
0

私はpem形式の証明書を持っています。 2つのファイルが完全に、RSA PublicとRSA秘密鍵。 私はpowershellスクリプトでサーバーにhttps要求をするためにこれらを使用しなければなりません。powershellの認証にpem証明書と鍵を使用https要求

X509証明書証明書ストアを使用して証明書を追加しようとしました。しかし、クライアント鍵証明書(RSA秘密鍵)を追加する方法がわかりません。 私は証明書を使用してみましたが、私はこのエラーを取得:

Exception Message: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure c 

hannelを。

クライアント証明書とキーの両方をpowershellでどのように要求できますか?

私が書いたPowerShellスクリプト:

$method = "GET" 
# Create a dictionary object that allows header storage in Rest call 
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 
$headers.Add("X-Qlik-Xrfkey",$xrfKey) 
$headers.Add("X-Qlik-User", "***") 


#Get a selection object for all inactive users 
$path = "/qrs/app?xrfkey=$xrfKey" 
$theCommand = $senseServerHostName + "/qrs" + $path 

$ns = "System.Security.Cryptography.X509Certificates" 
$store = New-Object "$ns.X509Store"("My","CurrentUser") 
#$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "CurrentUser") 
$store.Open("ReadOnly") 
#$certs = $store.Certificates.Find("FindByExtension", $certExtension, $false) 
#"$store.Certificates" 
    ForEach($cert in $store.Certificates) 
    { 

     $certToUse = $cert 
    } 
    "$certToUse" 
$response = Invoke-RestMethod $theCommand -Headers $headers -Method $method -Certificate $certToUse 

私は ノードコードNode.jsの使用要求作ることができたものの:

var https = require('https');  
var fs = require('fs');  
var options = {  
rejectUnauthorized: false,  
hostname: '****', 
method: 'GET', 
path: '/qrs/app?xrfkey=****', 
headers: { 
//'Accept': 'application/json', 
'x-qlik-xrfkey' : '****', 
'X-Qlik-User' : '****' 
}, 
key: fs.readFileSync("C:\\client_key.pem"), 
cert: fs.readFileSync("C:\\client.pem") 

}; 
https.get(options, function(res) { 
console.log("Got response: " + res.statusCode); 
res.on("data", function(chunk) { 
console.log("BODY: " + chunk); 
}); 
}).on('error', function(e) { 
console.log("Got error: " + e.message); 
}); 

感謝を。

+0

PEM全体を店舗にインポートしましたか? certmgr.mscは、関連付けられた秘密鍵を持つ証明書を表示しましたか?これらのファイルを主キーで証明書としてインポートするには、PKCS#12形式に変換する必要があると思います。 IIRC Windowsでは、SSLエンジンを実行しているときにキーをファイルとして保存することはできません。 – Vesper

+0

はい、パブリック証明書と関連するプライベートキーファイルを1つのPKCS#12コンテナにマージし、Windows証明書ストアにインストールする必要があります。 – Crypt32

+0

公開鍵を証明書ストアにインポートしたばかりです。パブリックとプライベートをPKCS12にマージし、証明書ストアにインストールしようとします。そして、サーバーにヒットしようとします。ありがとう。 – sand

答えて

0

PEMファイルのPKCS12への変換が私に役立ちました。

関連する問題