国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

詳解nginx basic auth配置踩坑記

2024-08-30 12:24:56
字體:
供稿:網(wǎng)友

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

basic auth配置示例:

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

說明:

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

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

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

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

crypt_r() failed (22: Invalid argument)

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

go語言生成nginx支持的密碼

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

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

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

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

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

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

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

    長度為2的字符串,取值范圍為[a-zA-Z0-9./],如果超過兩位會被忽略,并且只能支持最長8位的key,如果key超過8位,則8位之后的會被忽略 $id$salt$encrypted 格式,用于支持其它的加密算法, id表示算法類型,具體取值有:
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語言中可以通過import "C"方式直接調(diào)用c語言的庫函數(shù),下面是封裝crypt函數(shù)的具體實(shí)現(xiàn):

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江门市| 彰化市| 晋州市| 桂阳县| 湘潭县| 萍乡市| 于都县| 泸定县| 苍山县| 芒康县| 蕉岭县| 西乌珠穆沁旗| 冀州市| 博爱县| 土默特右旗| 阿荣旗| 峨山| 澄江县| 墨玉县| 军事| 盈江县| 吉首市| 慈溪市| 仁布县| 绥化市| 吉林市| 汉川市| 西吉县| 武陟县| 黄石市| 扎囊县| 皮山县| 米脂县| 奉化市| 渭源县| 开江县| 南和县| 息烽县| 环江| 建阳市| 兴义市|