我的情况如下:许多开发人员都需要有权限才能从远程源安装 ruby gems 和 python eggs。目前,我们的防火墙内有一台服务器托管这些 gems 和 eggs。我们现在希望能够在防火墙外安装托管在该服务器上的东西。由于我们托管的一些 gems 和 eggs 是专有的,我希望以尽可能不引人注意的方式锁定对该机器的访问权限,让开发人员无法访问。
我首先想到的是使用类似 ssh 密钥的东西。因此,我花了一些时间研究 SSL 相互认证。我能够设置好一切并正常工作,使用 curl 进行测试,但不幸的是,我必须向 curl 传递额外的参数,以便它知道证书、密钥和证书颁发机构。
我想知道是否有类似 ssh 代理的东西可以设置来自动提供该信息,以便我可以将证书和密钥推送到开发人员的机器,这样开发人员就不必在每次尝试安装某些东西时都登录或提供密钥。
我想要避免的另一件事是必须修改“gem”命令和“pip”命令以在建立 http 连接时提供密钥。
我们也欢迎任何其他可以解决此问题的建议(与 SSL 相互认证无关)。
编辑:我一直在继续研究这个问题,并且偶然发现了隧道。 我思考这可能就是我正在寻找的,有关 stunnel 的任何反馈也都很棒!
答案1
针对 HPC 和网格的网格安全基础设施 (API 是公开的且可用) 有点特殊。MyProxy 允许用户获取 RFC 3820 代理凭据。在 MyProxy 验证了原始证书的凭据后,您基本上会获得代理证书 (短期)。curl
应该使用 RFC 3820 证书。还有可以使用 GSI 的 SSH。请参阅MyProxy——X.509 凭证管理器。
答案2
(您没有说您使用的是哪个平台。)
在 OSX 上,Keychain 可以处理这个问题。虽然它与 ssh-agent 并不完全相同,但您可以将其配置为允许某些应用程序访问私钥(根据您选择的设置,是否提示)。
在 Linux 上,您可以使用侏儒钥匙圈,其目标类似。我不确定它是否提供了与 OSX 的 Keychain 相同的粒度,即为每个应用程序授予不同的权限,但您也可以在登录时解锁它。
答案3
为什么不使用 IPSEC 为您需要的服务设置可信隧道 - 第一次设置和配置会多一些工作,但此后它可以是透明的。
使用 SSH 也可以实现同样的效果(让会话持续很长时间)——这可以通过在 SSH 会话开始时需要输入一次密码来实现,或者如果可以的话,您可以选择使用没有密码的非对称密钥;如果您使用 SSH,您将必须进行配置更改或 DNS 调整才能使名称正常工作,因为您必须使用客户端访问本地转发端口才能到达远程服务器。
答案4
我最终采取了一种完全不同的方法。我使用带有 SSL 和 BasicAuth 的 Nginx 在防火墙外设置了一个服务器。这种方法效果很好。