OpenWrt Forum Archive

Topic: Basic Authentication on uhttpd

The content of this topic has been archived on 12 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi,

I have been trying to set up basic authentication in uhttpd.

Followed this:
http://wiki.openwrt.org/doc/uci/uhttpd

But to no avail.

Was wondering if anyone had any insight??


My httpd.conf config in /etc/

/web:root:root

My uhttpd config in /etc/config

# Server configuration
config uhttpd main
    # HTTP listen addresses, multiple allowed
    list listen_http    0.0.0.0:80
#    list listen_http    [::]:80
    # HTTPS listen addresses, multiple allowed
    list listen_https    0.0.0.0:443
#    list listen_https    [::]:443
    # Server document root
    option home        /www
    # Reject requests from RFC1918 IP addresses
    # directed to the servers public IP(s).
    # This is a DNS rebinding countermeasure.
    option rfc1918_filter 1
    # Certificate and private key for HTTPS.
    # If no listen_https addresses are given,
    # the key options are ignored.
    option cert        /etc/uhttpd.crt
    option key        /etc/uhttpd.key
    # CGI url prefix, will be searched in docroot.
    # Default is /cgi-bin
    option cgi_prefix    /cgi-bin
    # List of extension->interpreter mappings.
    # Files with an associated interpreter can
    # be called outside of the CGI prefix and do
    # not need to be executable.
    list interpreter    ".php=/usr/bin/php-cgi"
    #list interpreter    ".cgi=/usr/bin/perl"
    # Lua url prefix and handler script.
    # Lua support is disabled if no prefix given.
    #option lua_prefix    /luci
    #option lua_handler    /usr/lib/lua/luci/sgi/uhttpd.lua
    # CGI/Lua timeout, if the called script does not
    # write data within the given amount of seconds,
    # the server will terminate the request with
    # 504 Gateway Timeout response.
    option script_timeout    60
    # Network timeout, if the current connection is
    # blocked for the specified amount of seconds,
    # the server will terminate the associated
    # request process.
    option network_timeout    30
    # Basic auth realm, defaults to local hostname
    #option realm    OpenWrt
    # Configuration file in busybox httpd format
    option config    /etc/httpd.conf
    # Certificate defaults for px5g key generator
    config cert px5g
    # Validity time
    option days        730
    # RSA key size
    option bits        1024
    # Location
    option country        DE
    option state        Berlin
    option location        Berlin
    # Common name
    option commonname    OpenWrt

I think the relevant line is option config /etc/httpd.conf

Both configs are chmod 0755 root(rwx) others(rx)

am I wrong?

Thanks, Ros

(Last edited by roscorcoran on 11 Feb 2011, 02:13)

Works for me. All I did was (uhttpd package was not installed here):

opkg update
opkg install uhttpd

uci set uhttpd.main.config=/etc/httpd.conf
uci commit uhttpd

echo "/:root:root" > $(uci get uhttpd.main.config)

echo "<P>HELLO</P>" > $(uci get uhttpd.main.home)/index.html

/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

The browser now asks for a username and password.

(Last edited by written_direcon on 11 Feb 2011, 21:18)

Hrm, hrm, I thought maybe you want to write an tiny short brief howto?

The point is not opkg install uhttpd, but special options (if there are any).

You could also write something about the differences between the webserver programs. When to use one when the other.

I especially would like some stuff about:
http://wiki.openwrt.org/doc/howto/certificates.overview

Ye know, if your want to.

Hi written_direcon,

Thanks! I was missing the:
uci set uhttpd.main.config=/etc/httpd.conf
uci commit uhttpd

They seemed to help. So the password works now as plain text.

I am having trouble setting the password as $p$root or as an md5
Even with the exact same method as setting a plain text password. Including doing a "killall uhttpd" beforehand.

e.g.
echo "/:root:$p$root" > $(uci get uhttpd.main.config)
OR
echo "/:root:$1$$ysVNzQc4CTMkp5daOdZ.3/" > $(uci get uhttpd.main.config)

Don't work..

any ideas?

roscorcoran wrote:

Don't work.. any ideas?

Yes, use single quotes, otherwise the shell interprets $p$root as variables, meaning it will end up empty in the file.

echo '/:root:$p$root' > /etc/httpd.conf

Thanks guys worked perfect...

The discussion might have continued from here.