2012-11-07 151 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并写入标准输出,因此你不需要使用文件来完成转换。

相关问题