校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > 詳解nginx basic auth配置踩坑記

詳解nginx basic auth配置踩坑記

熱門(mén)標(biāo)簽:大連400電話(huà)如何申請(qǐng) 電銷(xiāo)機(jī)器人怎么接線(xiàn)路 外呼系統(tǒng)坐席費(fèi)計(jì)入會(huì)計(jì)哪個(gè)科目 高德地圖標(biāo)注好做嗎 如何分析地圖標(biāo)注 達(dá)亞電銷(xiāo)機(jī)器人官網(wǎng) 電銷(xiāo)機(jī)器人價(jià)值 新余高德地圖標(biāo)注怎么修改 撫順地圖標(biāo)注

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)單的訪(fǎng)問(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 util

import (
  "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í)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:南通 海東 新鄉(xiāng) 楊凌 遼源 黃石 湖南 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解nginx basic auth配置踩坑記》,本文關(guān)鍵詞  詳解,nginx,basic,auth,配置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解nginx basic auth配置踩坑記》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于詳解nginx basic auth配置踩坑記的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲毛片av在线| 色噜噜狠狠成人网p站| 欧美日韩美少妇| 亚洲一区欧美一区| 欧美四级电影在线观看| 亚洲第一成年网| 7777精品伊人久久久大香线蕉 | 国产精品久久久久婷婷二区次| 国产黄色精品网站| 亚洲国产成人在线| 色综合天天狠狠| 亚洲精品成人在线| 欧美一级片在线| 国产精品一区二区在线播放| 国产成人在线免费观看| 中文字幕一区二区三区在线观看| 99久久精品久久久久久清纯| 亚洲免费观看高清完整 | 亚洲综合激情另类小说区| 欧美精品日韩精品| 黑人精品欧美一区二区蜜桃| 国产欧美日韩三区| 91蜜桃免费观看视频| 亚洲专区一二三| 精品国产乱码久久久久久闺蜜| 国产一区二区调教| 国产高清精品在线| 一区二区三区在线看| 欧美丰满美乳xxx高潮www| 国产一区二区不卡在线| 国产亚洲1区2区3区| 色悠悠亚洲一区二区| 日本亚洲欧美天堂免费| 国产亚洲一本大道中文在线| 91亚洲精品一区二区乱码| 日日骚欧美日韩| 中文字幕精品在线不卡| 91精选在线观看| 国产片一区二区| 欧美在线播放高清精品| 国产精品影视天天线| 亚洲国产色一区| 亚洲国产激情av| 欧美日韩精品三区| av午夜一区麻豆| 麻豆精品久久精品色综合| 亚洲免费观看高清完整| 精品成人私密视频| 欧美三区在线观看| 成人一级片在线观看| 日本不卡在线视频| 亚洲综合在线五月| 国产精品久久久久一区二区三区| 欧美一级视频精品观看| 欧美色综合天天久久综合精品| 成人性生交大片免费看视频在线 | 日本不卡不码高清免费观看| 亚洲少妇最新在线视频| 久久久久99精品一区| 777欧美精品| 欧美性色黄大片| 91女人视频在线观看| 久草在线在线精品观看| 婷婷亚洲久悠悠色悠在线播放| 亚洲天堂免费看| 中文字幕五月欧美| 欧美国产视频在线| 久久精品无码一区二区三区| 日韩手机在线导航| 91精品国产品国语在线不卡| 欧美日韩一级黄| 欧美中文字幕一区| 一本大道久久a久久综合| 成人黄色a**站在线观看| 国产成人精品免费一区二区| 国产美女在线观看一区| 激情国产一区二区| 首页国产丝袜综合| 青青草国产成人av片免费| 午夜精品在线视频一区| 亚洲va欧美va人人爽午夜| 91黄色免费网站| 一本到不卡精品视频在线观看| 成人亚洲精品久久久久软件| 精品在线一区二区| 欧美一级久久久久久久大片| 欧美精品自拍偷拍| 91麻豆精品久久久久蜜臀| 在线观看免费一区| 欧美精品三级日韩久久| 日韩午夜中文字幕| 337p日本欧洲亚洲大胆精品| 久久亚洲二区三区| 国产亚洲制服色| 亚洲日穴在线视频| 亚洲6080在线| 日本欧美在线看| 国产美女久久久久| av电影在线观看完整版一区二区| 白白色亚洲国产精品| 91丝袜美女网| 欧美乱熟臀69xxxxxx| 日韩欧美一级在线播放| 精品日本一线二线三线不卡| 久久精品夜夜夜夜久久| 亚洲精品videosex极品| 日韩精品亚洲一区| 国产一区二区日韩精品| 不卡欧美aaaaa| 精品视频一区三区九区| 精品国产成人系列| 国产精品久久久久久久久免费相片 | 亚洲国产精品影院| 美女视频一区二区| av中文一区二区三区| 色94色欧美sute亚洲13| 99久久精品国产麻豆演员表| 欧美撒尿777hd撒尿| 精品国产第一区二区三区观看体验| 国产片一区二区三区| 亚洲精品国产无套在线观 | 一区二区三区国产精华| 日韩电影免费在线观看网站| 国产成人av一区二区| 欧美视频中文一区二区三区在线观看 | 久久国产精品99久久人人澡| 91最新地址在线播放| 日韩欧美二区三区| 亚洲激情av在线| 国产在线乱码一区二区三区| 欧洲精品视频在线观看| 国产午夜精品一区二区| 亚洲超碰97人人做人人爱| 成人黄色在线看| 精品美女被调教视频大全网站| 洋洋av久久久久久久一区| 国产福利视频一区二区三区| 91麻豆精品国产91久久久资源速度 | 热久久国产精品| 精品亚洲porn| www.欧美色图| 国产福利一区二区| 日韩精品影音先锋| 国产精品乱码久久久久久| 亚洲成人午夜电影| 国产在线一区观看| 99久久综合狠狠综合久久| 蜜桃一区二区三区四区| 91精品1区2区| 精品国产乱码久久久久久夜甘婷婷| 国产精品美女久久久久aⅴ| 亚洲精品ww久久久久久p站| 亚洲成人你懂的| 国产一区二区三区免费| 日韩视频一区二区| 亚洲欧美在线高清| 麻豆一区二区三| 亚洲精品亚洲人成人网在线播放| 午夜电影一区二区三区| 一区二区免费在线播放| 91啪亚洲精品| 久久久777精品电影网影网| 夜夜精品视频一区二区| 久久久综合视频| 亚洲一二三区在线观看| 三级久久三级久久| 不卡一区中文字幕| 欧美一区二区三区免费| 亚洲视频每日更新| 国产不卡视频一区二区三区| 色8久久人人97超碰香蕉987| 亚洲视频一区二区在线| 国产精品资源在线看| 欧美性感一类影片在线播放| 国产午夜亚洲精品理论片色戒| 午夜精品久久久久久久久久久| 99久久精品国产网站| 久久精品一区四区| 亚洲成精国产精品女| 国产99久久久国产精品免费看| 欧美浪妇xxxx高跟鞋交| 国产午夜精品久久久久久久| 成人在线综合网| 日韩一区二区三区视频| 5月丁香婷婷综合| 亚洲欧洲性图库| 久久99久久99| 久久奇米777| 久久激情五月激情| 日韩一区二区在线免费观看| 亚洲精选一二三| 久久99久久精品| 久久色在线视频| 久草精品在线观看| 日韩一区二区三区在线观看| 亚洲成人免费av| 日韩欧美一区在线观看| 亚洲午夜久久久久久久久久久| 在线精品视频免费观看| 色香蕉久久蜜桃|