使用私钥和公钥进行API身份验证

5
我希望能够通过Web API在CLI中类似SSH的方式授权用户(上传公钥到服务器,然后使用私钥进行授权)。这个可行吗?我不是要生成公/私钥对,而是重新使用现有的id_rsa和id_rsa.pub。
你知道有没有软件包可以让这更容易(最好是Ruby on Rails的gem)?
@edit:
具体来说,我想在网站上登录,上传并连接我的公钥到在线账户,然后能够通过CLI界面使用网站的API(身份验证)。

抱歉,我不太明白。这是指您希望用户能够以某种方式使用私钥作为身份验证来使用Web API吗?还是您希望用户能够使用私钥作为身份验证来访问CLI? - jpgeek
我想在网站上登录,将我的公钥与我的账户连接起来,然后能够通过cli接口登录到网站的api。 - sheerun
@sheerun 你能找到解决方案吗?我正在做类似的事情,但仍然无法理解正确的解决方案。 - thapakazi
1个回答

2
您可以使用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-keygen的默认格式转换为PEM格式。如果需要,您可以在服务器上运行此命令进行转换 - 您必须尝试并查看是否匹配格式,因为我不确定OpenSSL :: PKey :: RSA是否接受ssh-keygen的默认格式。您还可以使ssh-keygen从STDIN读取并写入STDOUT,以便无需使用文件进行转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接