2011-04-28 87 views
1

我需要生成一個SSH密鑰對,我會跟在後面的程序工作,所以需要他們爲字符串。不幸的是,ssh-keygen實用程序不支持將鍵寫入STDOUT或類似的東西。生成由腳本SSH密鑰對以安全的方式

所以,「退而求其次」將有ssh-keygen它的輸出寫到臨時文件,我可以接着讀回程序。然而,這會造成系統上其他人讀取私鑰文件的風險(該腳本將由Web應用運行)。

我怎樣才能生成的方式,是安全密鑰對?

回答

0

沒有產生分配私有密鑰完全安全的方式;最安全的方式是讓每個客戶端生成密鑰對並僅傳輸公鑰。

但是,如果您處於一種無法正常工作的狀態,並且您致力於集中生成密鑰對,則確實有幾個選項。

有硬件安全模塊(HSM),爲你做到這一點。如果你負擔得起,這是最好的方式。

做不到這一點:

  1. 確保您的web應用程序或在自己的用戶密鑰生成器的包裝運行(我會打電話給了這個答案中,這家用戶kguser')。
  2. 製作kguser擁有的非web訪問目錄,權限爲0700(使用chmod設置)
  3. 確保您的密鑰生成器包裝設置爲'umask 0177';它應該確保它創建的任何文件都是0600(只有kguser將能夠讀寫)
  4. 生成指定難以猜測的密鑰(例如隨機UUID)文件名
  5. chmod 0600快捷鍵文件當你生成它們,萬一你的umask設置不持有或得到改變
  6. 傳輸通過SSL /私鑰TLS連接
  7. 安全擦除私有密鑰文件(例如,Linux上的「切碎」)
  8. 使用cron作業定期查找並安全擦除早於幾分鐘的任何私鑰文件(清除由於應用程序錯誤,崩潰等原因而留下的任何文件)

如果你確實是偏執狂,你還可以通過讓你的web應用程序使用自己的對稱密鑰來加密寫入和解密發送給用戶時,確保在磁盤上加密密鑰。然而,這樣做會讓更多的密鑰管理搞砸,所以我不推薦它。

如果您永遠不會將該密碼存儲到磁盤,在密鑰上設置密碼也會有很大幫助。如果有人設法恢復密碼保護的密鑰,他們仍然有猜測密碼的關鍵是有用的。但是,這也意味着用戶在使用密鑰時必須提供密碼 - 這可能也可能不可接受。