2009-11-23 70 views
2

我必須使用帶RSA的SHA-1算法使用PKCS#1填充數字簽名字符串。我已經下載了Turbo Power Lockbox。使用LockBox讀取PEM格式的私鑰

私鑰我是PEM格式,並創建使用OpenSSL:已

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj 
    "/C=US/ST=CA/L=Mountain View/CN=www.mycompany.com" 
    -keyout myrsakey.pem -out c:\temp\myrsacert.pem 

這裏是什麼樣子:

-----BEGIN RSA PRIVATE KEY----- 
MIICXAIBAAKBgQDFzvqdAEQn9MrSLTNua5SOxshV/8jQIf3qpfunBXa9SVdm4NJw 
lY7iYpwivw7EdMlBe4FmezN9LGwyIokcUSt4KUdWmA8l4Lm5rcuDzzfmlVWP7y+j 
0GKG2XCp2JwHpW4Q5WiMgcAnCMD/gbDustfz3utxQhLNBdWp2MlrEH2/rQIDAQAB 
AoGAUMZmnHohWtehgxYmLG8N6QfPgx7CWAupbop9KwUWKdGrOT2RcZwBDv0JmT6/ 
vwWZsX3Hp5ujuPfM7uQfbUrQHrcruUg/fPY8YXcWgNfOytGpaN/XKxfy2g2Cp8mE 
4yoDR2QW8jo25ZH1q1cJ3jMyX9xlXaSZm7qtaoiDydE6roECQQDxqtP2tMEZ2FmQ 
2o4T5Zv7P4II2PrLq+9IP0ASCZ2VzLxm2Pk6kxjnPjZ2oHG8pUQHvMz0m8Br3BY8 
X1BpXrj9AkEA0YpBH7qm/nbG6YjxKAL3PbxXUJ06T/ByLjfstfCrT3LxDeklfWJb 
n/V8ahRcKPLajdbKAuWvJA5NvjeJPi34cQJAZ+vD1nUIDKsiaM3zBs9X8gTvUAqu 
XmMDNJguXxNPdplh8wAevHeA3/+6v+xivHJ8/K7Nm+pWJouv7Co4k/ctqQJASV4y 
TUzKmgC2xyCG5+6Z6Ujf/b7/ouva3un//PiG0yu40ZkX4l4lHM4UwQPd/QyDj/Rs 
CTWo7GQBvp+tc1MfUQJBALnQnNOIIkvwIK+1J6iLZgh7GurbCPMrH8nSn8SxkfBe 
qq5JWo31LQAUNDW5ntG0qHZQpx6zm2MzIlt2NgOLf4s= 
-----END RSA PRIVATE KEY----- 

如果我沒有記錯的話,我想要使​​用的組件是TLbRSAKey。所以,我試圖從文件創建密鑰對象和閱讀:

var 
    mPrivateKey: TLbRSAKey; 
begin 
    mPrivateKey := TLbRSAKey.Create(aks1024); 
    mPrivateKey.LoadFromFile('C:\temp\myrsakey.pem'); 

在LoadFromFile我得到一個「無效的RSA密鑰」的錯誤。我究竟做錯了什麼? Lockbox是否支持PEM格式的密鑰?沒有一個例子說明;一切似乎是在ASN格式

+0

剛剛[自行車脫落(http://bikeshed.com/),但*「CN = www.mycompany.com「*是以前的做法。即使您使用自己的CA簽名(即,它不是自簽名的),它今天也會導致很多問題。請參閱[如何使用openssl創建自簽名證書?](http://stackoverflow.com/q/10175812/608639)。重點使用主題備用名稱(而不是它的自簽名部分)。 – jww 2015-05-07 20:06:41

回答

3

我不是delphi程序員,但我想我會嘗試提供一些指針。

首先,確保爲您的真實應用程序生成新的私鑰。現在你已經與我們分享了你的私鑰,我們不希望任何開放的安全漏洞。

其次,使用來自OpenSSL的DER輸出生成ASN.1格式。 PEM格式只是二進制ASN.1結構的base-64編碼(並且添加了標記)。

你可以回去DER兩種方法之一:

1)您可以分析和基礎-64在PEM信封數據進行解碼。爲此,只需對-----BEGIN/END RSA PRIVATE KEY-----標記之間的數據進行解碼即可。

或者,因爲你反正...創建一個新的密鑰;)

2)您可以使用-outform DER說法,當你使用OpenSSL生成密鑰。

我不確定這會適用於您的應用程序,但也許它會幫助您進一步。

TIP轉換一個PEM provate關鍵DER格式,請使用OpenSSL中rsa實用程序:

openssl rsa -inform PEM -outform DER -in privkey.pem -out privkey.der 
+0

這有幫助。我想我已經斷開了數據的格式。我做了你在(2)中所說的,即添加-outform DER參數。它生成了證書和密鑰。證書似乎是正確的,我可以在Windows中雙擊它,它包含所有的信息。但私鑰仍然以Base64標記出現。我也嘗試了-keyform DER參數,但得到相同的結果。 – 2009-11-23 04:20:25

+1

不幸的是,我不認爲有一種方法可以直接創建DER格式的私鑰。相反,我添加了一個將您的私鑰轉換爲DER格式的提示。 – jheddings 2009-11-23 06:42:06

+0

好吧 - 我已經成功地將我的私鑰轉換爲DER格式,根據jheddings(我更新了我的問題以反映這一點)。但現在我得到一個零誤差的分割。 jheddings - 謝謝,但我認爲這是它轉向Delphi的東西。 – 2009-11-23 12:48:13