2012-10-23 45 views
1

我有一個使用公共REST API的Rails應用程序,它使用SSL客戶端證書對API客戶端進行身份驗證。在Rails應用程序中籤署新證書

我希望該應用充當簡單的CA. 管理員用戶應該可以訪問網站上的一個頁面並申請一個新的證書。應用程序應該生成一個新的SSL證書,並使用應用程序的私鑰進行簽名,並以某種形式將其返回給管理員用戶。

admin用戶將在客戶端應用程序中安裝此證書。這些應用程序將能夠使用新的證書來訪問REST API。

實現這個最簡單的方法是什麼?在將openssl配置爲服務器上的CA(例如like this)後,我知道生成和簽署新證書的唯一方法是使用openssl命令行。我需要這樣做嗎,並且在Rails中使用反引號與openssl進行通信?這看起來很乏味和脆弱。

我該如何將證書退回給管理員?我可以將它們作爲文本文件傳遞給他們下載。我已經看到允許用戶從瀏覽器申請證書的CA Web界面,然後直接將證書安裝到瀏覽器中。然後,管理員必須導出證書以將其傳遞給客戶端腳本。

我認爲Rails沒有任何種類的「acts_as_CA」gem?

[請注意,我已經知道如何對我的私鑰進行客戶端請求驗證。這個問題具體涉及頒發新證書。]

回答

0

我有這個工作了。在Ruby中OpenSSL的lib中擁有所有你需要的CA的工作方法,以明顯的例子這裏記載:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL.html

我並不需要建立一個OpenSSL的CA服務器上(如問題掛鉤以上) - 那就是使用命令行openssl作爲CA.在Ruby中使用它,您需要管理您自己的CA證書存儲,唯一的序列號等。

如果您希望客戶端證書可直接下載到瀏覽器,請提供帶有「.p12」文件擴展名的PCKS12軟件包。 請參閱http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/PKCS12.html 對「名稱」參數使用友好的名稱 - 這不會影響證書的DN,但它可以很容易地在瀏覽器的選擇鍵對話框中找到。 不要將您的CA證書包含在PKCS12包中,Windows會要求用戶將您的CA安裝爲完全受信任的根CA.

0

您可以使用openssl gem或sshkey生成密鑰對。

傳遞出證書作爲文本文件或純文本

相關問題