配置使用證書免密碼登陸wordpress後臺

  1. 配置Nginx服務器端認證
  2. 配置Nginx客戶端認證
  3. 配置wordpress後臺使用證書免密碼登陸

配置Nginx服務器端認證

首先申請一個證書(不要玩自籤的證書了,不解釋),startcom或者wosign都有免費的DV SSL,只驗證域名全部權的證書。建議申請wosign的證書,免費的並且會根據你的服務器環境生成相應的crt,按照下面的配置填寫好證書路徑便可,配置起來至關簡單。本身配置過nginx上的證書的可能知道,會碰到chrome、ie上正常,firefox上提示鏈接不安全的狀況,這是證書鏈的問題,須要你合成crt。wosign會自動生成nginx的配置,省去了不少麻煩。php

ssl                                on;
ssl_certificate                    site_bundle.crt;
ssl_certificate_key                site.key;
ssl_protocols                      SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers                        HIGH:!aNULL:!MD5;

配置完reload nginx,使用https打開網址會發現上面有一個小鎖,這就表示配置生效了。nginx

配置Nginx客戶端認證

首先申請一個email證書或者我的證書(一樣不要玩自籤的證書,一樣不解釋),wosign有免費的email證書(我不是給wosign打廣告)。nginx配置中增長以下配置:chrome

ssl_verify_client           on;
ssl_client_certificate      ca.cer;
ssl_verify_depth            3;

配置中的ca.cer怎麼來的,我也摸索了很長時間,下面解釋這個文件是怎麼生成的. 將你申請到的證書導入到我的證書中,而後點開你的證書,會有一個證書鏈的信息.如圖:瀏覽器

在此輸入圖片描述

將證書從證書鏈從下到上導出,而後按此順序複製到文本中,中間不能有換行。而後保存爲ca.cer, 證書有多少級,ssl_verify_depth就填寫多少,配置好nginx,重啓打開網站就會有證書選擇提示框了。安全

在此輸入圖片描述

配置wordpress後臺使用證書免密碼登陸

首先,配置客戶端驗證的代碼是不能配置在location下的,所以你須要一個單獨的域名(如login.xxxx.com)指向wp-login.php,並且正常域名下的wp-login.php要轉向到此域名下。服務器

location = /wp-login.php {
       return 301 https://login.xxxx.com$request_uri;
}

客戶端驗證的代碼只配置在此虛擬機login.xxxx.com下,當你點擊登陸時會自動跳轉到https://login.xxxx.com/wp-login.php並彈出證書選擇對話框。 前面說明如何設置了驗證客戶端證書的證書鏈,而這個根證書是能夠頒發不少證書的,所以此根證書頒發的證書在此設置下是均可以驗證經過的。可是每一個證書又有不同的特徵,所以咱們須要驗證一下本身申請的證書的$ssl_client_s_dn或者$ssl_client_serial。在這裏咱們驗證$ssl_client_serial。 Nginx配置(login.xxxx.com):cookie

if ( $ssl_client_serial != 75B0A656A8FD9CAA3E70400000000000 ) {
      return 495;
}

將證書的序號換成你的證書序號。若是提交的不是你的證書,將會報錯495。 到這一步配置成功了一半,如今須要配置wordpress的自動登陸。 在你主題的function.php中添加以下代碼:wordpress

function auto_login() {
    if( !is_user_logged_in() ) {
        $user_login = 'username';
        $user = get_userdatabylogin($user_login);
        wp_set_current_user($user->ID, $user_login);
        wp_set_auth_cookie($user->ID);
        do_action('wp_login', $user_login);
    }
}
add_action( 'login_init', 'auto_login' );

將username換成你要登陸的用戶名。網站

就此配置完成,重啓瀏覽器,點擊登陸選擇證書就登陸到後臺了。google

PS:不少地方我沒有詳細寫如何配置,這樣的話文章太冗長拖沓了.一些基礎的配置能夠去google.而且時間緣由未經校對,有錯輕噴.

文章原創,轉載請註明來源:https://www.xuchenjie.com/wordpress-login/

相關文章
相關標籤/搜索