Apache Httpd Server 2.2 Auth Password Formats
Notes about the password encryption formats generated and understood by Apache.
Basic Authentication
There are four formats that Apache recognizes for basic-authentication passwords. Note that not all formats work on every platform.:
PLAIN TEXT (i.e. unencrypted)Windows, BEOS, & Netware only.CRYPTUnix only. Uses the traditional Unix crypt(3) function with a randomly-generated 32-bit salt (only 12 bits used) and the first 8 characters of the password.SHA1"{SHA}" + Base64-encoded SHA-1 digest of the password.MD5"$apr1$" + the result of an Apache-specific algorithm using an iterated (1,000 times) MD5 digest of various combinations of a random 32-bit salt and the password. See the APR source file apr_md5.c for the details of the algorithm.Generating values with htpasswd
MD5
$ htpasswd -nbm myName myPassword
myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
SHA1
$ htpasswd -nbs myName myPassword
myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=
CRYPT
$ htpasswd -nbd myName myPassword
myName:rqXexS6ZhobKA
Generating CRYPT and MD5 values with the OpenSSL command-line program
OpenSSL knows the Apache-specific MD5 algorithm.
MD5
$ openssl passwd -apr1 myPassword
$apr1$qHDFfhPC$nITSVHgYbDAK1Y0acGRnY0
CRYPT
openssl passwd -crypt myPassword
qQ5vTYO3c8dsU
Validating CRYPT or MD5 passwords with the OpenSSL command line program
The salt for a CRYPT password is the first two characters (converted to a binary value). To validate myPassword against rqXexS6ZhobKA
CRYPT
$ openssl passwd -crypt -salt rq myPassword
Warning: truncating password to 8 characters
rqXexS6ZhobKA
Note that using myPasswo instead of myPassword will produce the same result because only the first 8 characters of CRYPT passwords are considered.
The salt for an MD5 password is between $apr1$ and the following $ (as a Base64-encoded binary value - max 8 chars). To validate myPasswordagainst $apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
MD5
$ openssl passwd -apr1 -salt r31..... myPassword
$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
Database password fields for mod_dbd
The SHA1 variant is probably the most useful format for DBD authentication. Since the SHA1 and Base64 functions are commonly available, other software can populate a database with encrypted passwords that are usable by Apache basic authentication.
To create Apache SHA1-variant basic-authentication passwords in various languages:
PHP
'{SHA}' . base64_encode(sha1($password, TRUE))
Java
"{SHA}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))
ColdFusion
"{SHA}" & ToBase64(BinaryDecode(Hash(password, "SHA1"), "Hex"))
Ruby
require 'digest/sha1'
require 'base64'
'{SHA}' + Base64.encode64(Digest::SHA1.digest(password))
C or C++
Use the APR function: apr_sha1_base64
PostgreSQL (with the contrib/pgcrypto functions installed)
'{SHA}'||encode(digest(password,'sha1'),'base64')
Digest Authentication
Apache recognizes one format for digest-authentication passwords - the MD5 hash of the string user:realm:password as a 32-character string of hexadecimal digits. realm is the Authorization Realm argument to the AuthName directive in httpd.conf.
Database password fields for mod_dbd
Since the MD5 function is commonly available, other software can populate a database with encrypted passwords that are usable by Apache digest authentication.
To create Apache digest-authentication passwords in various languages:
PHP
md5($user . ':' . $realm . ':' .$password)
Java
byte b[] = java.security.MessageDigest.getInstance("MD5").digest( (user + ":" + realm + ":" + password ).getBytes());
java.math.BigInteger bi = new java.math.BigInteger(1, b);
String s = bi.toString(16);
while (s.length() < 32)
s = "0" + s;// String s is the encrypted password
ColdFusion
LCase(Hash( (user & ":" & realm & ":" & password) , "MD5"))
Ruby
require 'digest/md5'
Digest::MD5.hexdigest(user + ':' + realm + ':' + password)
PostgreSQL (with the contrib/pgcrypto functions installed)
encode(digest( user || ':' || realm || ':' || password , 'md5'), 'hex')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-722432/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache(httpd)詳解Apachehttpd
- httpd 一鍵編譯安裝指令碼(centos6&7_httpd2.2&2.4)httpd編譯指令碼CentOS
- apache啟動報錯:httpd: aprApachehttpd
- Linux——搭建Apache(httpd)伺服器LinuxApachehttpd伺服器
- python urllib socks5 auth username password 設定Python
- Apache httpd和php的結合方式ApachehttpdPHP
- apache提示錯誤:httpd-ahssl.confApachehttpd
- Apache2 使用auth_digest驗證Apache
- Apache HTTPd 2.4.49 路徑穿越漏洞(CVE-2021-41773)復現Apachehttpd
- Chapter 2. Video Formats and QualityAPTIDEORM
- HTTPD之二————HTTPD服務詳解————httpd的配置檔案常見設定httpd
- 解決安裝Redis之後設定密碼,報(error) ERR Client sent AUTH, but no password is setRedis密碼Errorclient
- Linux yum安裝httpd報錯 No package httpd available ?LinuxhttpdPackageAI
- httpd的坑httpd
- mac-httpdMachttpd
- web server apache tomcat11-16-mbeanWebServerApacheTomcatBean
- web server apache tomcat11-14-CGIWebServerApacheTomcat
- web server apache tomcat11-31-websocketWebServerApacheTomcat
- web server apache tomcat11-33-CDIWebServerApacheTomcat
- auth
- Auth、OAuth 和 Auth 什麼是?OAuth
- web server apache tomcat11-08-JNDI ResourcesWebServerApacheTomcat
- web server apache tomcat11-10-Class LoaderWebServerApacheTomcat
- web server apache tomcat11-26-maven jarsWebServerApacheTomcatMavenJAR
- web server apache tomcat11-29-Windows AuthenticationWebServerApacheTomcatWindows
- How to Build and Deploy a Next.js App on Apache ServerUIJSAPPApacheServer
- httpd啟動指令碼httpd指令碼
- web server apache tomcat11-18-clusting 叢集WebServerApacheTomcat
- web server apache tomcat11-22-logging 日誌WebServerApacheTomcat
- web server apache tomcat11-24-Virtual Hosting and TomcatWebServerApacheTomcat
- web server apache tomcat11-06-Host Manager AppWebServerApacheTomcatAPP
- web server apache tomcat11-03-deploy 如何部署WebServerApacheTomcat
- web server apache tomcat11-12-SSL/TLS ConfigurationWebServerApacheTomcatTLS
- Django中的函式make_password、set_password和check_passwordDjango函式
- laravel8.5用自帶的auth登入功能,預設驗證的password密碼欄位,怎麼修改Laravel密碼
- Centos httpd模組 Job for httpd.service failed because the control process exited with error code.CentOShttpdAIError
- no-wwwtl622com17008768000-password never prompt for password
- httpd編譯安裝phphttpd編譯PHP
- Holer實現外網訪問本地Apache HTTP ServerApacheHTTPServer