带你深入了解nginx基本登录认证(含配置步骤)点击访问msy.plus,获得更好的http基本认证体验http基本认证的作用将从浏览器弹出的登录窗口简单明了,容易理解。对于面向终端用户的前端来说不够友好,但是对于内部人员操作的后台还是很有用的,通常作为一层安全措施来应用。这样的登录认证安全吗?auth_basic作为认证模块,在apache和nginx中比较常用。在很多没有内置认证的系统中,常用的操作是使用nginx的auth_basic做一个简单的认证。开启auth_basic认证后,访问时会提示输入用户名和密码进行认证。通常与auth_basic一起使用的一个工具是htpasswd,它来自httpd-tools包,主要用于生成用户及其密码。加密文件可能存在问题。但是htpasswd在生成密码的时候出现了问题。可以看到htpasswd一共有4种加密算法,分别是MD5、bcrypt、CRYPT、SHA。httpd-tools2.2版本默认使用加密算法CRYPT对密码进行加密。在httpd-tools2.4版本中,默认使用MD5。来加密密码的人解释说,SHA比MD5加密更安全。为什么新版本默认使用MD5作为加密算法?在httpd-tools2.4的图片中,最后一句“TheSHAalgorithmdoesnotuseasaltandislesssecurethantheMD5algorithm”可以翻译为不加盐的SHA算法,密码学中没有MD5安全盐,称为salt,是一个随机生成的字符串。在没有加盐的哈希中,有一种破解方法叫做彩虹表碰撞。原密码加盐后进行哈希处理,可以有效避免彩虹表攻击的暴力破解。安全的处理方式是更新httpd-tools到2.4版本,然后重新生成用户密码对,或者htpasswd生成密钥时,使用参数-m选择md5加密方式生成新的用户密码对.模拟验证演示在此为Example我们新建站点域名:nginx_basic_auth.msy.plus登录名:admin密码:12345678仅供演示,生产环境不能使用这个很简单的密码生成测试文件echo"
welcometonginx_basic_auth.msy.plus
》>>./nginx_basic_auth/index.html配置nginx的httpbasicauthentication在nginx.conf中查看是否有对conf.d目录的支持。如果不存在,则添加include/usr/local/soft/nginx-1.18.0/conf/conf.d/*.conf;说明:在生产环境中,为了方便管理,每个服务器都会放到一个专门的conf文件中,不混在一起而是全部写在nginx.conf中,修改创建和查找不方便用于构建网站服务器的服务器文件{auth_basic"lhdtest.comadmin";auth_basic_user_file/usr/local/soft/nginx-1.18.0/conf/conf.d/admin.pwd;听80;server_namenginx_basic_auth.msy.plusroot/data/site/admin/html;indexindex.htmlindex.shtmlindex.htm;access_log/data/nginx/logs/admin.access_log;error_log/data/nginx/logs/admin.error_log;}生成密码nginx只需要一个密码文件用于校验,密码文件在哪生成并不重要,所以只需要一个可以生成密码的方法即可钥匙。方法有很多,可以用python,可以用go或者c,这里我用windows的centos子系统直接生成key上传到服务器生成工具。选择htpasswd,htpasswd是开源http服务器apachehttpd的命令工具,用于生成http基本认证的密码文件安装htpasswdubuntu安装:sudoapt-getinstallapache2-utilscentos安装:yum-yinstallhttpdkeygenerationoptions这里使用下面的生成选项#-n:Don'tupdatefile;在标准输出上显示结果//不更新文件;在标准的输出中显示结果#-b:Usethepasswordfromthecommandline//Usethepasswordfromthecommandline#-m:ForceMD5encryptionofthepassword//ForcethepasswordtobeencryptedwithMD5Enter生成密钥的命令htpasswd-nbmadmin12345678您可以看到输出具有密钥admin:$apr1$nkxLxBPa$EGa.u5yKuQ08m6g/8bGb9。在你之前指定的密码文件中,将生成的内容输入auth_basic_user_file/usr/local/soft/nginx-1.18.0/conf/conf.d/admin.pwd;//对于windowsserver用户,路径可能略有不同。测试效果进入网站输入正确的用户名和密码进入网站。参考文章你的nginx登录认证安全吗?Centos安装htpasswd_Nginx配置http基本认证(BasicAuth)使用htpasswd