配置使用证书免密码登录wordpress后台

筅森魡賤 提交于 2019-12-21 13:40:55

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  1. 配置Nginx服务器端认证
  2. 配置Nginx客户端认证
  3. 配置wordpress后台使用证书免密码登录

配置Nginx服务器端认证

首先申请一个证书(不要玩自签的证书了,不解释),startcom或者wosign都有免费的DV SSL,只验证域名所有权的证书。建议申请wosign的证书,免费的而且会根据你的服务器环境生成相应的crt,按照下面的配置填写好证书路径即可,配置起来相当简单。自己配置过nginx上的证书的可能知道,会碰到chrome、ie上正常,firefox上提示连接不安全的情况,这是证书链的问题,需要你合成crt。wosign会自动生成nginx的配置,省去了很多麻烦。

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配置中增加如下配置:

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):

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

将证书的序号换成你的证书序号。如果提交的不是你的证书,将会报错495。 到这一步配置成功了一半,现在需要配置wordpress的自动登录。 在你主题的function.php中添加如下代码:

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换成你要登录的用户名。

就此配置完成,重启浏览器,点击登录选择证书就登录到后台了。

PS:很多地方我没有详细写如何配置,这样的话文章太冗长拖沓了.一些基础的配置可以去google.并且时间原因未经校对,有错轻喷.

文章原创,转载请注明来源:https://www.xuchenjie.com/wordpress-login/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!