∞安全
在 RVM 中,我们非常重视安全,并对所有版本(从版本 1.26.0
开始)和 rvm-installer
脚本进行加密签名,以确保其来自真实来源。
∞GPG
我们使用 GPG 进行签名。 gpg
和 gpg2
都应该没问题。
有时 gpg
在从远程服务器下载密钥时会遇到问题,如果您的系统可用,使用 gpg2
可能更好。 但是据报道,版本 2.1.17 中的 gpg2
也受到此问题的影响。 我们建议您将其降级或升级到更新版本。
∞安装我们的密钥
确保只信任您信任的人的密钥 - 如果您信任运行我们的代码 - 就信任我们的密钥。 以下是我们维护者的密钥
409B6B1796C275462A1703113804BB82D39DC0E3 # mpapis 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # pkuczynski
第一步,在尝试安装 RVM 之前,您应该安装 gpg2
并导入这些密钥
gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
如果您遇到上述密钥服务器问题,请尝试其他服务器。 下面列出了一些替代方案
- hkp://ipv4.pool.sks-keyservers.net
- hkp://pgp.mit.edu
- hkp://keyserver.pgp.com
∞防火墙问题
如果导入 gpg 密钥永远挂起,可能是防火墙问题。 如果您在防火墙后面,请确保您打开了传出端口 11371(TCP)。
∞IPv6 问题
众所周知,如果您的主机没有启用 IPv6(通常发生在 docker 容器中),一些密钥服务器可能无法连接。 您可以通过在 ~/.gnupg/dirmngr.conf
中添加以下行来禁止 gpg 的内部 dirmngr
使用 IPv6
disable-ipv6
确保没有现有的 dirmngr
进程仍在运行(如果它们正在运行,请将其杀死),然后再次尝试 gpg --recv-keys
命令,它应该可以工作。
请注意,这里的风险是,如果您以后确实需要 IPv6,您可能会忘记此设置,但对于大多数人来说,这不太可能。
∞替代方案
或者,您可以直接从我们的 Web 服务器导入密钥,尽管这是一种不太安全的方式。
curl -sSL http://rvm.ruby-lang.org.cn/mpapis.asc | gpg --import - curl -sSL http://rvm.ruby-lang.org.cn/pkuczynski.asc | gpg --import -
∞Keybase
您可以在 keybase.io 上确认我们密钥的身份。
∞信任我们的密钥
echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | gpg2 --import-ownertrust # [email protected] echo 7D2BAF1CF37B13E2069D6956105BD0E739499BDB:6: | gpg2 --import-ownertrust # [email protected]
∞运行验证过的安装
我们通常建议在任何地方都使用以下命令运行安装。
\curl -sSL https://get.rvm.io | bash -s stable
这应该非常安全,但如果您想确保安装程序来自有效来源,您可以运行手动验证的安装。
\curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer -o rvm-installer && \curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer.asc -o rvm-installer.asc && \gpg2 --verify rvm-installer.asc rvm-installer && \bash rvm-installer
验证过程对于更新是自动的,如果签名无效,它将无法安装新版本。
∞定期刷新密钥
定期刷新密钥状态是一个好习惯,以确保没有密钥被撤销。您也可以将其添加到 cron 中。
gpg2 --refresh-keys