Mysql

保護備用埠上的 Wordpress 管理界面

  • November 13, 2009

我有一個自託管的 Wordpress 部落格。只要有可能,我都會嘗試使用 SSL 和 X.509 客戶端證書身份驗證來保護 Web 應用程序的管理界面。對於 phpMyAdmin 之類的東西,我已經讓所有這些都正常工作,因此 Web 伺服器的技術位都已到位。

我的主機設置是:

  • nginx 0.7.x
  • 帶有 fpm 更新檔的 PHP 5.2.10
  • MySQL 5.x

我在 VPS 上執行所有這些,所以我只有一個外部 IP。我在盒子上執行了其他幾個 SSL 網站:一個在預設埠上,所有其他網站在備用埠上(這樣每個網站都可以擁有與其主機名匹配的不同證書)。

我的意圖是有兩個伺服器配置塊:

  1. 如果您嘗試訪問 /wp-admin 下的任何內容,則一個服務 blog.domain.com 埠 80 返回 404
  2. 另一個在埠 8443 上執行,沒有 URL 限制,但需要提供有效的 X.509 客戶端證書。

我面臨的問題是 Wordpress 不喜歡在兩個不同的埠上訪問。每當我嘗試訪問https://blog.domain.com:8443>時,它會將我重定向到<https://blog.domain.com,這完全是一個不同的虛擬主機(伺服器上的主站點,預設執行港口)。然後我在瀏覽器中收到證書名稱錯誤,即使我覆蓋了警告,我也不再與 wordpress 網站交談。

部落格的主要 URL 儲存在 wp_options 表中:

mysql&gt; select option_value from wp_options where option_name = 'siteurl';
+------------------------------+
| option_value                 |
+------------------------------+
| http://blog.domain.com       |
+------------------------------+
1 row in set (0.00 sec)

mysql>

所以我不能只製作部落格文件的第二個副本,並將主 URL 設置為https://blog.domain.com:8443並以這種方式訪問管理界面。

有任何想法嗎?

更新

在使用建議的答案玩了一段時間後,我得出的結論是不可能完全按照我的意願去做。啟用 wordpress 中的功能會導致使用者向 /wp-(admin|login|register) 發出 SSL 請求,如果我在 SSL 端需要 X.509 客戶端證書,他們就無法做到這一點。

我想出的最佳解決方案是設置一個帶有證書身份驗證的 SSL 前端,它只是將請求代理回非 SSL nginx。即使這樣,我也不能完全切斷對 /wp-admin 的非 SSL 訪問,因為使用者註冊和配置文件管理中使用的大部分 CSS 和 Javascript 都來自該目錄。

我可以允許通過 HTTP 訪問 /wp-admin 下的 CSS、圖像和 Javascript,並且只需要對 PHP 腳本進行 SSL 訪問,但是使用者不能修改他們的配置文件(配色方案、顯示名稱等)。下一步將是辨識普通使用者所需的 PHP 腳本子集,並讓那些通過 HTTP 而拒絕其餘的,但是如果他們重新組織事情,我將成為 wordpress 開發團隊的奴隸。

我想這歸結為訓練自己只通過 SSL 管理部落格,即使伺服器允許我通過純 HTTP 這樣做。

這可能會對您有所幫助,從 wordpress 2.6 開始,您可以強制管理和登錄區域為 ssled。

http://codex.wordpress.org/Administration_Over_SSL

 define('FORCE_SSL_LOGIN', true);
 define('FORCE_SSL_ADMIN', true);

有時,您希望整個 wp-admin 使用 https 協議在安全連接上執行。從概念上講,該過程的工作方式如下:

設置兩個具有相同 url(部落格 url)的虛擬主機,一個安全,另一個不安全。在安全的虛擬主機上,設置一個重寫規則,將所有非 wp-admin 流量傳送到不安全的站點。在不安全的虛擬主機上,設置一個重寫規則,將所有到 wp-admin 的流量傳送到安全主機。放入一個過濾器(通過外掛)過濾 wp-admin 中的連結,以便一旦啟動,管理連結將被重寫以使用 https 並編輯 cookie 以僅在加密連接上工作。

他們提到的外掛稱為admin ssl

引用自:https://serverfault.com/questions/43674