openssl passwd 手动生成密码
引言:在Linux系统中我们要向手动生成一个密码可以采用opensll passwd来生成一个密码作为用户账号的密码。Linux系统中的密码存放在/etc/shadow文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。
选项说明:
- -crypt:UNIX标准加密算法,此为默认算法。如果加盐(-salt)算密码,只取盐的前2位,2位后面的所有字符都忽略。
- -1(数字):基于MD5的算法代号。
- -apr1(数字):apache中使用的备选md5算法代号,不能和"-1"选项一起使用,因为apr1本身就默认了md5。htpasswd工具生成的身份验证密码就是此方法。
- -salt:加密时加点盐,可以增加算法的复杂度。但加了盐会有副作用:盐相同,密码也相同,则加密的结果将一样。
- -in file:从文件中读取要计算的密码列表
- -stdin:从标准输入中获取要输入的密码
- -quiet:生成密码过程中不输出任何信息
示例:
/etc/nginx/.htpasswd
换成你自己的文件存放路径
sudo sh -c "echo -n 'user:' >> /etc/nginx/.htpasswd" # user就是你要登陆的用户名
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd" # 接下来会提示你输入密码和确认密码
系统将提示您创建密码。接下来,打开你的 Nginx 配置文件,并在 location / { 下添加这两行:
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
...
将生成的密码串,手动添加到/etc/shadow
中就可用作用户的登陆密码了。
关于openssl passwd文件,它生成的密码可以直接复制到/etc/shadow文件中,但openssl passwd因为不支持sha512,所以密码强度不够。如果要生成sha512的密码,可以使用grub-crypt生成,它是一个python脚本,只不过很不幸CentOS 7只有grub2,grub-crypt命令已经没有了。
本系列文章
带你深入了解nginx基本登录认证(包含所有配置步骤和深度解析)
带你深入了解nginx基本登录认证:使用htpasswd生成密码
带你深入了解nginx基本登录认证:使用openssl生成密码
带你深入了解nginx基本登录认证:使用python生成密码