2017-07-25 126 views
0

我正在寫一個VB6中的客戶端程序,它將通過HTTP連接到服務器。 運行服務器的公司提供了一個名爲SomeCertificate.p12的證書文件。Winhttp和p12證書

我的程序在Windows XP上運行。這是客戶正在使用的操作系統。

我試圖找到如何使用此證書發送請求到服務器。

這是我迄今所做的:

  1. 複製的證書文件到我的測試計算機。
  2. 使用Internet Explorer V8,我做了「工具| Internet選項|內容|證書|受信任的根機構」並導入了證書。
  3. 安裝了winhttpcertcfg工具。
  4. 冉從命令提示符下:

    「winhttpcertcfg -i SomeCertificate.p12 -c LOCAL_MACHINE \我的-a計算機名\用戶名-p PasswordFromServerCompany」

輸出成這個樣子了。我替換虛設串不同的令牌:

進口證書:

CN =字符串1

OU =字符串2

O = STRING3

L =串,4

C = string5

私鑰訪問h如已經授予帳戶: 計算機名\ USERNAME

  • 我的VB6的代碼看起來是這樣的:

    私人WITHEVENTS m_ServerObj作爲WinHttpRequest 集m_ServerObj =新WinHttpRequest m_ServerObj 。開 「GET」, 「https://serveraddress

    呼叫m_ServerObj.SetClientCertificate( 「LOCAL_MACHINE \個人\ SomeCertificate」)

    m_ServerObj.Send TextToSend

  • 發送調用導致異常: 「證書才能完成客戶端身份驗證」

    我在SetClientCertificate呼叫嘗試不同的字符串,但我不斷收到同樣的錯誤。

    我會很感激任何幫助和提示。我究竟做錯了什麼?我的代碼錯了嗎?我錯誤地使用了winhttpcertcfg嗎?

    謝謝。

    +0

    我現在正在使用VB6的事實應該沒關係。該程序使用Windows winhttp.dll,一個COM對象。我可以使用C++,但仍然有同樣的問題。 – yaronkl

    回答

    0

    服務器公司向我發送了一個.PEM證書進行安裝。一旦我做到了,問題就解決了。 謝謝。