我得到了一個私鑰,這個私鑰證明是pkcs8格式,我使用它轉換成了一個pem文件下面的命令:如何將一個私鑰轉換爲可用於.NET的窗口的格式
openssl pkcs8 -inform der -nocrypt -in private.key -out pkey.pem
我現在需要將其轉換爲PKCS12,所以我可以用它在.NET創建X509證書(我也想將其導入到Windows證書管理器)。
我試過這個命令:
openssl pkcs12 -export -name myalias -in mycert.crt -inkey pkey.pem -out keystore.p12
然而,我沒有公鑰,我已經使用pkey.pem文件作爲-in ARG嘗試,但它告訴我No certificate matches private key
。如果我嘗試沒有-in
參數,那麼什麼都不會發生(我的意思是什麼都沒有,直到按ctrl-c
時纔有空行)。
如何從私鑰生成公鑰或轉換爲沒有公鑰的pkcs12?
這個問題的第一部分,是from the answer here
我found an answer這給了我一些希望,這說來運行這個命令(-nocerts):
openssl pkcs12 -export -nocerts -inkey your.private.key.pem -out your.private.key.p12
但是,當我嘗試導入文件導入Windows密鑰存儲區,它在導入時表示The specified file is empty
。
我也設法生成證書籤名請求from instructions here,其生成的證書文件,但該命令仍然不接受說No certificate matches private key
Another answer表明生成的公鑰,這是我做的,但當我使用它作爲-in
ARG還在說No certificate matches private key
,這是從私人密鑰生成此公鑰我不明白,使用這個命令:openssl rsa -in privkey.pem -pubout > key.pub
編輯: 我下面貼的答案,但如上所述,我無法驗證此信息mation或告訴它是否有效。如果有人有任何進一步的信息,請讓我知道。
您創建的是由您自己的私鑰簽名的自簽名證書。注意...爲了避免混淆,您的證書的文件擴展名不應該是「.csr」。這是指簽名請求。我的問題是您的客戶端應用程序中使用的私鑰和證書是什麼?它是用於認證/授權(通過SSL)還是用於從服務器簽署一些內容?或者是其他東西? – gtrig
我被第三方提供了私鑰和x509證書,所以我假設我需要使用私鑰對我的請求進行簽名和/或加密,並使用公鑰從其Web服務讀取響應。我在這裏有一個關於綁定的問題:http://stackoverflow.com/q/19427768/198048。在排序,不知道。顯然我必須猜測,但現在我在.Net中有一些可用的東西,我比我之前的領先一步。 –
通常,客戶端和網絡服務器之間的加密通信是通過SSL/TLS完成的。網址以「https://」開頭。如果這是您應該使用的機制,並且您獲得了私鑰,則可能需要「雙向」或「相互」SSL,這意味着客戶機必須向服務器進行身份驗證。這是通過私鑰完成的,它是匹配的證書。如果服務器信任簽署客戶端證書的CA,則可以對其進行身份驗證和授權。如果客戶端信任簽署了服務器證書的CA,它將使用所有安全連接。 – gtrig