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

she*_*run 5 authentication api ssh ruby-on-rails oauth

我想使用Web API以类似SSH的方式在CLI中授权用户(在服务器上上传公钥,然后使用私钥进行授权).可能吗?

我不是要生成公钥/私钥,而是重用现有的id_rsa和id_rsa.pub.

你知道任何使它更容易的软件包(最好是Ruby on Rails宝石吗?)

@编辑:

具体来说,我想登录网站,上传并使用在线帐户连接我的公钥,然后通过CLI界面使用网站的API(身份验证).

mrb*_*rdo 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
Run Code Online (Sandbox Code Playgroud)

并将其与公钥进行比较。您可以使用 #to_pem 或 #to_der 获取密钥的字符串表示形式,具体取决于您使用的格式(稍微尝试一下)。您也可以使用 rsa 库。

我想你可以使用

ssh-keygen -e -f id_rsa.pub > pemkey.pub
Run Code Online (Sandbox Code Playgroud)

从 ssh-keygen 的默认格式转换为 PEM。如有必要,您可以在服务器上运行此命令来进行转换 - 您必须尝试并查看是否正确匹配格式,因为我不确定 OpenSSL::PKey::RSA 是否接受 ssh 的默认格式- 注册机。您还可以使 ssh-keygen 从 STDIN 读取并写入 STDOUT,这样您就不需要使用文件来进行转换。