我正在寫一個VB6中的客戶端程序,它將通過HTTP連接到服務器。 運行服務器的公司提供了一個名爲SomeCertificate.p12的證書文件。Winhttp和p12證書
我的程序在Windows XP上運行。這是客戶正在使用的操作系統。
我試圖找到如何使用此證書發送請求到服務器。
這是我迄今所做的:
- 複製的證書文件到我的測試計算機。
- 使用Internet Explorer V8,我做了「工具| Internet選項|內容|證書|受信任的根機構」並導入了證書。
- 安裝了winhttpcertcfg工具。
冉從命令提示符下:
「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嗎?
謝謝。
我現在正在使用VB6的事實應該沒關係。該程序使用Windows winhttp.dll,一個COM對象。我可以使用C++,但仍然有同樣的問題。 – yaronkl