亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 網(wǎng)站 > Nginx > 正文

詳解nginx basic auth配置踩坑記

2024-08-30 12:29:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

nginx的basic auth配置由ngx_http_auth_basic_module模塊提供,對(duì)HTTP Basic Authentication協(xié)議進(jìn)行了支持,用戶(hù)可通過(guò)該配置設(shè)置用戶(hù)名和密碼對(duì)web站點(diǎn)進(jìn)行簡(jiǎn)單的訪問(wèn)控制。

basic auth配置示例:

location / {  auth_basic      "closed site";  auth_basic_user_file conf/htpasswd;}

說(shuō)明:

  1. auth_basic可設(shè)置為off或其它字符串,為off時(shí)表示不開(kāi)啟密碼驗(yàn)證
  2. auth_basic_user_file 為包含用戶(hù)名和密碼的文件,文件內(nèi)容如elastic:YsEm9Tb4.RwB6

踩坑的地方就是這個(gè)密碼,官方文檔里對(duì)支持的密碼類(lèi)型進(jìn)行了說(shuō)明:

  1. 采用系統(tǒng)函數(shù)crypt()加密的密碼;可通過(guò)htpasswd命令或者openssl passwd命令生成
  2. 通過(guò)Apache提供的基于MD5的變種加密算法(apr1),同樣可通過(guò)htpasswd或者openssl passwd命令生成
  3. 以“{scheme}data”格式表示的加密后的密碼,RFC 2307中有對(duì)該格式的密碼標(biāo)準(zhǔn)進(jìn)行了說(shuō)明。其中scheme指的是加密算法,nginx支持的scheme有PLAIN, SHA,SSHA算法。

使用htpasswd或者openssl passwd命令生成的密碼固然可以使得配置生效,nginx能夠正常地進(jìn)行密碼安全校驗(yàn),如果密碼類(lèi)型不支持, 則nginx或報(bào)錯(cuò):

crypt_r() failed (22: Invalid argument)

但是因?yàn)闃I(yè)務(wù)的需要,我們要用代碼生成nginx的配置并下發(fā)配置到每個(gè)云主機(jī)中,之后拉起nginx進(jìn)程。項(xiàng)目代碼使用go語(yǔ)言編寫(xiě),所以需要找一個(gè)對(duì)應(yīng)的函數(shù)或者庫(kù)生成nginx支持的密碼。

go語(yǔ)言生成nginx支持的密碼

在進(jìn)行自動(dòng)生成密碼開(kāi)發(fā)之前,思考了一下大概有三種方案可以實(shí)現(xiàn):

  1. 項(xiàng)目服務(wù)器上安裝htpasswd工具或openssl, 通過(guò)代碼執(zhí)行本地命令生成加密密碼
  2. 直接調(diào)用Linux系統(tǒng)函數(shù)crypt()加密密碼
  3. 使用go標(biāo)準(zhǔn)庫(kù)crypto加密密碼

首先,第一種方式是不太可取的,因?yàn)樾枰獜?qiáng)依賴(lài)服務(wù)器環(huán)境,所以直接pass。下面看第二種和第三種方式的具體實(shí)現(xiàn)。

直接調(diào)用系統(tǒng)函數(shù)crypt()

Linux的crypt函數(shù)有兩個(gè)參數(shù),函數(shù)定義為:

char *crypt(const char *key, const char *salt);

其中參數(shù)key為需要加密的內(nèi)容,salt參數(shù)有兩種類(lèi)型:

  1. 長(zhǎng)度為2的字符串,取值范圍為[a-zA-Z0-9./],如果超過(guò)兩位會(huì)被忽略,并且只能支持最長(zhǎng)8位的key,如果key超過(guò)8位,則8位之后的會(huì)被忽略
  2. $id$salt$encrypted 格式,用于支持其它的加密算法, id表示算法類(lèi)型,具體取值有:
ID | Method  ─────────────────────────────────────────────  1  | MD5  2a | Blowfish (not in mainline glibc; added in some    | Linux distributions)  5  | SHA-256 (since glibc 2.7)  6  | SHA-512 (since glibc 2.7)

go語(yǔ)言中可以通過(guò)import "C"方式直接調(diào)用c語(yǔ)言的庫(kù)函數(shù),下面是封裝crypt函數(shù)的具體實(shí)現(xiàn):

package crypt/*#define _GNU_SOURCE#include <unistd.h>*/import "C"import (  "sync"  "unsafe")var (  mu sync.Mutex)func Crypt(pass, salt string) (string, error) {  c_pass := C.CString(pass)  defer C.free(unsafe.Pointer(c_pass))  c_salt := C.CString(salt)  defer C.free(unsafe.Pointer(c_salt))  mu.Lock()  c_enc, err := C.crypt(c_pass, c_salt)  mu.Unlock()  if c_enc == nil {    return "", err  }  defer C.free(unsafe.Pointer(c_enc))  return C.GoString(c_enc), err}

生成密碼的具體實(shí)現(xiàn):

func main() {  des, err := crypt.Crypt("Elastic123", "in")  if err != nil {    fmt.Errorf("error:", err)    return  }  sha512, err := crypt.Crypt("Elastic123", "$6$SomeSaltSomePepper$")  if err != nil {    fmt.Errorf("error:", err)    return  }  fmt.Println("des:", des)  fmt.Println("SHA512:", sha512)}

經(jīng)過(guò)實(shí)測(cè),上述通過(guò)調(diào)用crypt函數(shù)生成nginx支持的加密密碼實(shí)際可用,但是需要注意的是如果密碼長(zhǎng)度超過(guò)8位,則salt參數(shù)只能選擇$id$salt$encrypted類(lèi)型,在測(cè)試過(guò)程中就是因?yàn)椴攘诉@點(diǎn)坑導(dǎo)致nginx只能校驗(yàn)密碼的前8位,無(wú)語(yǔ)。

因?yàn)樵诰帉?xiě)go代碼過(guò)程中調(diào)用了C函數(shù)庫(kù),這種方式也需要依賴(lài)服務(wù)器所處環(huán)境,因此最好的方式是采用go標(biāo)準(zhǔn)庫(kù)中的函數(shù)對(duì)密碼進(jìn)行加密。

使用crypto函數(shù)庫(kù)

go的crypto標(biāo)準(zhǔn)庫(kù)封裝了很多中加密算法,采用SHA加密算法進(jìn)行密碼加密的代碼如下:

package utilimport (  "crypto/sha1"  "encoding/base64")func GetSha(password string) string {  s := sha1.New()  s.Write([]byte(password))  passwordSum := []byte(s.Sum(nil))  return base64.StdEncoding.EncodeToString(passwordSum)}

測(cè)試過(guò)程中通過(guò)調(diào)用GetSha()函數(shù)生成了對(duì)密碼加密的字符串,但是直接配置在nginx的conf/htpasswd文件中,reload nginx配置后測(cè)試驗(yàn)證密碼是否生效,結(jié)果還是報(bào)錯(cuò),原來(lái)如前文所述,SHA加密的密碼必須帶有“{SHA}”前綴才可以,再次修改配置后經(jīng)過(guò)驗(yàn)證,成功地用代碼生成了nginx支持的對(duì)密碼加密的字符串。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品一区二区三区精品| 成人h动漫在线| 最新精品视频| 亚洲无码精品国产| 顶级黑人搡bbw搡bbbb搡| 在线码字幕一区| 一区二区三区四区精品| 黄色在线观看网站| 激情综合网五月激情| 456亚洲影院| 久草在线资源网站| 超碰在线最新网址| jazzjazz国产精品麻豆| 日本高清视频在线播放| av天堂永久资源网| 国产一区免费在线| 久久99精品国产99久久| 桃花视频大全不卡免费观看网站| 亚洲婷婷噜噜| 91影院在线免费观看视频| 国产福利久久精品| 亚洲天堂二区| 色综合天天性综合| 日韩午夜激情av| 穿情趣内衣被c到高潮视频| 青青草国产在线播放| 狠狠色丁香久久综合频道| 中文字幕一区二区三区四区五区人| 国内精品视频免费| 色综合久久综合网| 精品国内亚洲2022精品成人| 国产精品网红福利| 狠狠色丁香久久婷婷综| 99蜜桃在线观看免费视频网站| 懂色aⅴ精品一区二区三区蜜月| 国产精品国产三级国产aⅴ浪潮| 久久丝袜视频| 黄色污污在线观看| 亚洲va欧美va人人爽| 香蕉av一区二区三区| 99热这里只有精品2| 综合激情五月婷婷| 亚洲品质视频自拍网| 日韩av大片免费看| 亚洲香蕉伊综合在人在线视看| 日韩av超清在线观看| 大片在线观看网站免费收看| 欧美激情1区| 欧美成人小视频| 最近2019好看的中文字幕免费| 国产亚洲一卡2卡3卡4卡新区| 福利小视频在线观看| 亚洲一区二区三区精品在线观看| 欧美二区三区| 亚洲精品一线| 国产精品青青草| 久久成人精品电影| 91视频一区二区三区| 国产精品久久av| 中文字幕在线1| 91精品在线免费视频| 国产91足控脚交在线观看| 久久频这里精品99香蕉| 亚洲欧美偷拍卡通变态| 国产精品亚洲综合天堂夜夜| 精品久久久久一区二区| 在线观看日韩高清av| 日韩精品亚洲一区二区三区免费| 久久综合久久综合亚洲| 极品颜值美女露脸啪啪| 久久久久久av无码免费网站| 久久久久久婷| 青青草手机在线观看| 在线一级视频| 天堂av免费在线观看| 久久视频精品在线| 97超碰成人在线| 三级av免费观看| 一区二区三区网| 黄色网免费观看| 亚洲欧洲国产精品| 中文字幕第一页久久| 中文视频一区| 四虎影院在线免费播放| 在线观看精品视频一区二区三区| 青青青免费视频观看在线| 四色成人av永久网址| 亚洲精品成人在线| 国产色一区二区| 外国成人激情视频| 亚洲视频免费在线观看| 久久久久久久九九九九| 亚洲国产一区在线| 国产精品对白久久久久粗| 久草中文在线观看| h在线观看免费| 亚洲一二三四视频| 玖玖玖视频精品| 狠狠久久伊人| 91色在线porny| 色欲人妻综合网| jazzjazz国产精品麻豆| 国产精品免费看一区二区三区| 国产精品综合久久| 国产a√精品区二区三区四区| 亚洲第一区中文字幕| 欧美最猛黑人xxxxwww| 91亚洲天堂| www亚洲人| 日韩欧美精品在线观看| 久久久精品黄色| 国内精品久久久久影院薰衣草| av免费在线观看网址| 精品久久久免费视频| 在线观看日韩中文字幕| av先锋影音少妇| 狠狠躁夜夜躁人人爽视频| 成人中文字幕视频| 久久久久久久久久久久网站| 老**午夜毛片一区二区三区| 国产精品日韩欧美大师| youjizzxxxx18| 国产综合视频一区二区三区免费| 在线中文字幕av| 亚洲福利视频一区| eeuss网址直达入口| 国产精品毛片久久久久久久久久99999999| 欧美激情自拍| 日韩欧美一区二区一幕| 国产精品99一区二区三| 极品人妻一区二区| 91在线看www| 四季av一区二区凹凸精品| 黑人粗进入欧美aaaaa| 精品视频在线观看免费| 国偷自产一区二区免费视频| 欧美 日本 亚洲| 国产麻豆一精品一av一免费| 欧洲激情综合| 成人91视频| 亚洲网站在线观看| 日韩精品免费一区二区三区竹菊| 欧美视频你懂的| 免费黄在线观看| 400部精品国偷自产在线观看| 亚洲一区二区三区高清| 2019亚洲日韩新视频| 亚洲一区免费在线| 精品一区二区三区在线播放视频| 牛人盗摄一区二区三区视频| 欧美性爽视频| 男女午夜视频在线观看| 天天成人综合网| 91av在线免费观看视频| 在线免费观看色| 亚洲第一精品夜夜躁人人躁| 91精品中文字幕一区二区三区| 欧美伦理视频网站| 大片在线观看网站免费收看| 另类中文字幕网| 国产馆av播放| 亚洲一区二区三区四区的| 黄页网址在线观看| 久久99国产精品视频| 99视频在线精品| 久久久久久亚洲精品中文字幕| 国偷自产av一区二区三区| 瑟瑟视频在线观看| 一区二区三区波多野结衣在线观看| 亚洲精品乱码久久久久久久| 免费毛片在线看片免费丝瓜视频| 国产麻豆精品一区| 精品一区二区三区中文字幕老牛| 精品一区二区三区国产| 成人aaaa免费全部观看| 91精品国产色综合久久ai换脸| 久久精品国产一区二区三区日韩| 国产精品hd| 国产精品区在线观看| 国产日韩av在线播放| 福利二区91精品bt7086| 久热这里有精品| 国产伦精品一区二区三区四区| 亚洲女同性videos| 久久精品夜夜夜夜久久| 涩涩视频在线观看| 成人免费毛片网| 深夜福利小视频| 久热久热免费视频中文字幕777| 亚洲影院免费| 欧美日韩一区中文字幕| 亚洲视频成人| 91丝袜超薄交口足| 久久婷婷五月综合色丁香| www.97视频| 人人爽人人av| 69视频在线观看免费| 日韩欧美国产一区二区在线播放| 欧美xxxx视频| 免费观看亚洲视频| 国产美女视频一区二区三区| 国产呻吟对白刺激无套视频在线| 亚洲欧美激情精品一区二区| 欧美另类z0zxhd电影| 日本老熟俱乐部h0930| 无码无套少妇毛多18pxxxx| 美女免费观看一区二区三区| 成人免费观看49www在线观看| 国产99久久精品一区二区永久免费| 国产乱码精品一区二区三区卡| 久久全国免费久久青青小草| 免费看一级大黄情大片| 亚洲国产精品二区| 亚洲久草在线视频| 69国产成人精品视频软件| 国产精品视频第一区二区三区| 国产黄色小视频在线| 国产成人精品网| 中文一区二区完整视频在线观看| 青青青免费在线| 韩国福利一区| 欧美一区二区三区免费视频| 日本一区美女| 2019日本中文字幕| 色香欲www7777综合网| 91视频观看免费| 久久成人精品无人区| 日韩黄色在线免费观看| 性一交一乱一伧国产女士spa| 精品国产高清a毛片无毒不卡| 一区二区三区视频在线| 美国黄色a级片| 国产精品久久国产愉拍| 国产精品女主播在线观看| brazzers精品成人一区| 亚洲午夜日本在线观看| 三上悠亚在线免费观看| 亚洲日本一区二区| 国产视频自拍一区| 亚洲欧美一区二区三区四区五区| 国产69精品久久久久9| 特黄特色特刺激视频免费播放| 亚洲新中文字幕| av无码av天天av天天爽| 欧美成人xxx| 人人干视频在线| 在线亚洲欧美视频| 福利精品视频在线| 97色婷婷成人综合在线观看| 中国精品一区二区| 最近日本中文字幕| 亚洲国产综合在线看不卡| 精品成人av一区二区在线播放| 国产在线拍揄自揄拍| 欧美国产日韩一区二区在线观看| 日本三级片在线观看| 亚洲一区二区免费视频软件合集| 成人在线播放| 欧美日本国产视频| 国产无遮挡裸体免费久久| 亚洲国产精品va在看黑人| www.亚洲成人| 好吊日在线视频| 男女在线视频| 国产伦精品一区二区三区在线播放| 精品一区中文字幕| 在线看黄色的网站| 蜜桃视频中文字幕| 日韩欧美一区二区视频| 久久av免费| 日韩欧美视频第二区| 偷拍一区二区三区| 婷婷色在线资源| 欧美综合一区第一页| 欧美成年人视频网站欧美| 国产精品一区二区av白丝下载| 亚洲人成电影网站色xx| www.色欧美| 国v精品久久久网| 免费吸乳羞羞网站视频| 在线播放91灌醉迷j高跟美女| 在线看福利67194| 曰本色欧美视频在线| 91精品麻豆日日躁夜夜躁| 欧美三级韩国三级日本一级| 国内自拍视频网| 一本久久a久久免费精品不卡| 一卡二卡三卡四卡| 精品国产精品一区二区夜夜嗨| 国产精品一卡二卡三卡| 日本亚洲欧美成人| 偷拍自拍在线| 91免费视频网站| 亚洲一区二三| 国产视频一区二区在线播放| 日本精品视频在线观看| 国产精品777| 国产三级伦理片| 久久爱另类一区二区小说| 久久久久久久久久网| 国内精品麻豆美女在线播放视频| 99精品视频免费看| 日韩av毛片| 精品美女在线视频| 亚洲无在线观看| 国产精品一二三四五区| 国产又黄又猛又粗又爽| 免费看的www视频网站视频| 日韩欧美国产免费播放| 亚洲欧美一区二区三区| 久久综合中文| 99re资源| 天堂网视频在线观看| 国产精品一级片在线观看| 精品一区二区三区的国产在线播放| 国产精品九九| 久久综合久久鬼| 男人和女人啪啪网站| 亚洲国产综合在线| 丝袜美腿亚洲综合| 99久久婷婷国产综合精品青牛牛| 91亚洲精品国偷拍自产在线观看| 黄网在线观看| 五月天婷婷影视| 久久久久亚洲av无码专区首jn| 98国产高清一区| 另类专区欧美蜜桃臀第一页| 中日韩在线视频|