1. 程式人生 > 其它 >帶你深入瞭解nginx基本登入認證:使用openssl生成密碼

帶你深入瞭解nginx基本登入認證:使用openssl生成密碼

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生成密碼