首先申请一个证书(不要玩自签的证书了,不解释),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/