2011-06-09 93 views
2

我有一個應用程序,我正在爲一個客戶端工作,總結時允許他們的每個客戶端通過自定義模板創建自己的應用程序版本並關聯自己的域名(所有代碼都位於我的客戶端服務器上)。如何以編程方式安裝SSL證書(OpenSSL)

我面臨的問題是,當這些用戶使用自己的域名創建自己的品牌版本,然後想要登錄到他們的管理員系統無法提供https身份驗證。

我知道可以創建一個自簽名證書,我認爲有一個相當簡單的編程方式,但如果我想讓用戶能夠購買他們自己的CA簽名證書,那麼怎麼可能這完成了嗎?

我花了幾個小時試圖在網上找到這個問題的答案,但似乎無法找到解決這個令人困惑的問題。

我認爲我需要的是一些簡單的代碼,它允許用戶填寫所需的表單域,從而創建CSR文件,然後用戶將提供給CA以獲得他的CA文件,並且爲此代碼需要允許用戶上傳它......這又會自動安裝並重新啓動所需的Web服務。

任何/所有的幫助和指導將非常感謝!

+0

只是爲了澄清,它是否使用Apache Httpd? – Bruno 2011-06-09 10:40:43

+0

「我花了幾個小時試圖找到答案...「 - 問題恰恰就是這個問題?我已經兩次閱讀這篇文章並且找不到它(或者是」如何購買CA簽名證書「​​?當然,您還沒有花費數小時的時間...) – jww 2014-04-22 10:53:06

+0

感謝您的努力......假設我們正在使用Wordpress的「多站點」功能,以允許公衆從我們的系統創建自己的個人定製網站。可以說多站點模式設置爲創建每個新的網站作爲自己的子域名離開我們的主域名,通過使用另一個插件,我們可以讓用戶使用他們自己的域名,而不是讓他們添加一個指向我們服務器的名稱記錄。用戶購買他們自己的SSL證書,CSR gen +安裝該證書,以便https域名顯示其ssl證書 – 2014-07-16 06:39:09

回答

2

你將如何去取決於你的體系結構。但這裏有幾件事要考慮:

  1. 大多數SSL配置在一個唯一的IP地址上運行。這意味着您添加的每個SSL證書都需要另一個IP地址。例如,如果您使用負載均衡器,則可以集中配置該配置。無論您是否可以通過編程實現,取決於您的負載平衡器。
  2. 您最好根據您的私鑰生成CSR。否則,您將不得不允許用戶同時上傳私鑰和證書(有時還會鏈文件)。
+0

重新輸入唯一的IP地址:前一段可能是真實的,但自從[服務器名稱指示](http://en.wikipedia.org/wiki/Server_Name _Indication),這些問題很容易解決(除了仍在使用Windows XP並且SP <2)的IE6的用戶之外。 – 2011-06-09 11:02:48

1

通常,處理服務器證書是由系統管理員完成的,因此對於沒有這些知識的人員來說,很少有工具對用戶友好。

您可以創建一個創建私鑰和CSR的PHP網頁(請參閱openssl_csr_new示例),並允許用戶以PEM格式複製CSR(以及私鑰以備後用)。在申請證書時,一些CA會允許您將這樣的CSR粘貼到他們的表格中。一旦用戶獲得證書(也可能是來自CA的鏈),他們需要配置服務器以使用它(以及私鑰)。像Webmin這樣的工具可以讓你從網絡瀏覽器上做到這一點(如果你不想部署完整的基於Web的管理界面,你可能想要實現類似於Webmin爲此做的事情)。

如果申請證書的任務是你的客戶的責任(如果它是他們的服務器,它應該是真正的),他們需要接受一些訓練以知道該怎麼做,因爲程序將不可避免地會根據他們選擇的CA。不用說,如果您實現可以讓用戶更改證書和私鑰的腳本,則應該使用適當的身份驗證和授權來執行這些操作。