∞安全性
在 RVM,我們非常重視安全性,並對所有版本和 rvm-installer
腳本進行加密簽章(自版本 1.26.0
起),以確保其來自真實來源。
∞GPG
我們使用 GPG 進行簽章。gpg
和 gpg2
都可以使用。
有時 gpg
會在從遠端伺服器下載金鑰時遇到問題,如果您的系統可以使用 gpg2
,最好使用 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,您可能會忘記這個設定,但對大多數人來說,這不太可能發生。
∞替代方案
或者,您可能想直接從我們的網路伺服器匯入金鑰,儘管這是一種安全性較低的方式
curl -sSL https://rvm.dev.org.tw/mpapis.asc | gpg --import - curl -sSL https://rvm.dev.org.tw/pkuczynski.asc | gpg --import -
∞Keybase
我們金鑰的身分可於 keybase.io 確認
∞信任我們的金鑰
echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | gpg2 --import-ownertrust # mpapis@gmail.com echo 7D2BAF1CF37B13E2069D6956105BD0E739499BDB:6: | gpg2 --import-ownertrust # piotr.kuczynski@gmail.com
∞執行已驗證的安裝
我們通常建議在各處使用下列指令執行安裝
\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