【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
- 配置Nginx服务器端认证
- 配置Nginx客户端认证
- 配置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/
来源:oschina
链接:https://my.oschina.net/u/205525/blog/354039