2012-11-07 148 views
4

我想使用Web API以類似於SSH的方式(在服務器上上傳公鑰,然後使用私鑰進行授權)在CLI中授權用戶。可能嗎?使用私鑰和公鑰進行API身份驗證

我不是要生成公鑰/私鑰,而是重用現有的id_rsa和id_rsa.pub。

你知道的任何軟件包,使其更容易

@edit(最好是Ruby on Rails的寶石?):

具體來說,我想登錄在網站上,上傳和連接我的公鑰在線帳戶,然後就可以通過CLI界面使用網站的API(身份驗證)。

+0

對不起,沒有得到它。這是否意味着您希望用戶能夠以某種方式使用私鑰作爲身份驗證來使用Web API?或者你是否希望用戶能夠使用私鑰作爲身份驗證來訪問CLI? – jpgeek

+0

我想在網站上登錄,連接我的公鑰和我的賬戶,然後就可以通過cli界面登錄到網站的API。 – sheerun

回答

1

您可以使用openssl庫。至於你想要的更完整的解決方案,我不認爲它是可用的。儘管如此,圖書館應該不會做太多的工作。

http://ruby-doc.org/stdlib-1.9.2/libdoc/openssl/rdoc/OpenSSL/PKey/RSA.html

基本上做這樣的事情:

# private_key_str can be in PEM or DER format 
OpenSSL::PKey::RSA.new(private_key_str, 'passphrase').public_key 

,並將其與公共密鑰。您可以使用#to_pem或#to_der獲取密鑰的字符串表示形式,具體取決於您使用的格式(稍微演練一下)。您也可以使用rsa庫。

我認爲你可以使用

ssh-keygen -e -f id_rsa.pub > pemkey.pub 

從SSH-凱基到PEM的默認格式轉換。你可以在服務器上運行這個命令來進行轉換,如果有必要的話 - 你必須嘗試看到正確匹配格式,因爲我不確定OpenSSL :: PKey :: RSA是否接受默認的ssh格式-keygen。你也可以從STDIN中讀取ssh-keygen並寫入標準輸出,因此你不需要使用文件來完成轉換。

相關問題