httpd

home

次のコマンドを実行します。


$ doas cp /etc/example/httpd.conf /etc/

/etc/httpd.confを編集します。


# $OpenBSD: httpd.conf,v 1.23 2025/02/21 10:19:52 mbuhl Exp $

server "fab.ddns.me.uk" {
	listen on * port 80
	location "/.well-known/acme-challenge/*" {
		root "/acme"
		request strip 2
	}
	location * {
		block return 302 "https://$HTTP_HOST$REQUEST_URI"
	}
}

server "fab.ddns.me.uk" {
	listen on * tls port 443
	tls {
		certificate "/etc/ssl/fab.ddns.me.uk.fullchain.pem"
		key "/etc/ssl/private/fab.ddns.me.uk.key"
	}

	location "/pub/*" {
		directory auto index
	}

        location "/perl/*" {
                fastcgi
                root "/"
        }

        root "/htdocs/fab.ddns.me.uk"
}

fab.ddns.me.ukディレクトリを作成します。


$ doas mkdir /var/www/htdocs/fab.ddns.me.uk

次のコマンドを実行します。


$ doas rcctl enable httpd
$ doas rcctl start httpd

Let's Encryptの設定をしましょう。自己署名証明書(オレオレ証明書)の秘密鍵作成手順


$ doas openssl genrsa -out /etc/ssl/private/fab.ddns.me.uk.key 2048

fab.ddns.me.uk.fullchain.pemの作成 Common Name サーバーのホスト名(FQDN)を入力します。例: fab.ddns.me.uk 必須


$ doas openssl req -new -x509 -sha256 -days 365 -key /etc/ssl/private/fab.ddns.me.uk.key -out /etc/ssl/fab.ddns.me.uk.fullchain.pem

OpenBSDのhttpdは証明書ファイルにアクセスできる必要がありますが、秘密鍵は保護する必要があります。


$ doas chmod 644 /etc/ssl/fab.ddns.me.uk.fullchain.pem
$ doas chmod 600 /etc/ssl/private/fab.ddns.me.uk.key

次のコマンドを実行します。


$ doas cp /etc/example/acme-client.conf /etc/

/etc/acme-client.confを編集します。


#
# $OpenBSD: acme-client.conf,v 1.6 2025/08/18 15:51:57 job Exp $
#
authority letsencrypt {
        api url "https://acme-v02.api.letsencrypt.org/directory"
        account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
        api url "https://acme-staging-v02.api.letsencrypt.org/directory"
        account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain fab.ddns.me.uk {
#       alternative names { secure.example.com }
        domain key "/etc/ssl/private/fab.ddns.me.uk.key"
        domain full chain certificate "/etc/ssl/fab.ddns.me.uk.fullchain.pem"
        # Test with the staging server to avoid aggressive rate-limiting.
        #sign with letsencrypt-staging
        sign with letsencrypt
}

証明書を取得します。ddclientの設定を先に済ませておきましょう。


$ doas rcctl reload httpd
$ doas acme-client fab.ddns.me.uk

/var/wwwの現在の状況を確認。


$ ls -l /var/www/                                                    
total 60
drwxr-xr-x  2 root  daemon  512 Nov  8 16:57 acme
dr-xr-xr-x  2 root  wheel   512 Nov 30 06:39 bin
drwx-----T  2 www   daemon  512 Oct 13 03:32 cache
drwxr-xr-x  2 root  daemon  512 Nov 16 13:48 cgi-bin
drwxr-xr-x  2 root  daemon  512 Nov  8 13:46 conf
dr-xr-xr-x  2 root  wheel   512 Nov 30 06:48 dev
dr-xr-xr-x  3 root  wheel   512 Nov 30 06:45 etc
drwxr-xr-x  4 root  daemon  512 Nov  8 17:59 htdocs
drwxr-xr-x  2 root  daemon  512 Nov 30 00:00 logs
drwxr-xr-x  2 root  daemon  512 Nov 30 06:33 perl
drwxr-xr-x  2 root  daemon  512 Nov 22 07:26 run
dr-xr-xr-x  2 root  wheel   512 Nov 30 06:45 sbin
drwxr-x--T  2 www   bin     512 Nov 30 06:45 tmp
dr-xr-xr-x  8 root  wheel   512 Nov 30 06:45 usr
dr-xr-xr-x  4 root  wheel   512 Nov 30 06:45 var

OpenBSD