首先申請一個證書(不要玩自籤的證書了,不解釋),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
首先申請一個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,重啓打開網站就會有證書選擇提示框了。安全
首先,配置客戶端驗證的代碼是不能配置在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/