diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2010-08-10 09:48:55 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2010-08-10 09:48:55 +0000 |
commit | c0367e7f1e95ef668455892afc61ebbbc53a35d9 (patch) | |
tree | c93e79cc90f1147a5555882961458e5622a772c1 /testing | |
parent | 4f935d99aa754ff7b8b21b489be6caf9529f9a54 (diff) | |
download | aports-c0367e7f1e95ef668455892afc61ebbbc53a35d9.tar.bz2 aports-c0367e7f1e95ef668455892afc61ebbbc53a35d9.tar.xz |
testing/apache2: various fixes
* fix datadir to /usr/share instead of /share
* move apxs and build dir to -dev package
* separate subpackage for ldap modules
* separate subpackage for ssl support with post-install that creates cert
ref #392
Diffstat (limited to 'testing')
-rw-r--r-- | testing/apache2/APKBUILD | 47 | ||||
-rw-r--r-- | testing/apache2/alpine.layout | 2 | ||||
-rw-r--r-- | testing/apache2/apache2-ssl.post-install | 32 | ||||
-rw-r--r-- | testing/apache2/httpd.conf | 4 | ||||
-rw-r--r-- | testing/apache2/ssl.conf | 223 |
5 files changed, 298 insertions, 10 deletions
diff --git a/testing/apache2/APKBUILD b/testing/apache2/APKBUILD index a072fbab4..a18fe7f20 100644 --- a/testing/apache2/APKBUILD +++ b/testing/apache2/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=apache2 pkgver=2.2.16 -pkgrel=1 +pkgrel=2 pkgdesc="A high performance Unix-based HTTP server" url="http://httpd.apache.org/" license="APACHE" @@ -10,7 +10,8 @@ pkgusers="apache" pkggroups="apache" makedepends="openssl-dev zlib-dev apr-util-dev apr-dev pcre-dev autoconf automake" -subpackages="$pkgname-dev $pkgname-doc $pkgname-utils" +subpackages="$pkgname-dev $pkgname-doc $pkgname-utils $pkgname-ssl + $pkgname-ldap" source="http://archive.apache.org/dist/httpd/httpd-$pkgver.tar.bz2 http://mpm-itk.sesse.net/apache2.2-mpm-itk-2.2.11-02/02-rename-prefork-to-itk.patch http://mpm-itk.sesse.net/apache2.2-mpm-itk-2.2.11-02/03-add-mpm-to-build-system.patch @@ -25,6 +26,7 @@ source="http://archive.apache.org/dist/httpd/httpd-$pkgver.tar.bz2 apache2.logrotate apache2.initd httpd.conf + ssl.conf alpine.layout" prepare() { @@ -74,6 +76,7 @@ _buildmpm() { --with-apr-util=/usr/bin/apu-1-config \ --with-pcre=/usr \ --with-mpm=${mpm} \ + $@ \ || return 1 make || return 1 } @@ -84,7 +87,7 @@ build () { # build prefork with everything _buildmpm prefork \ --enable-mods-shared=all \ - --enable-ssl --with-ssl --enable-distcache \ + --enable-ssl --with-ssl \ --enable-proxy \ --enable-cache \ --enable-disk-cache \ @@ -130,9 +133,19 @@ package() { "$pkgdir/etc/conf.d/apache2" || return 1 install -d "$pkgdir"/var/www - ln -fs /var/log/httpd "$pkgdir/var/www/logs" - ln -fs /var/run/httpd "$pkgdir/var/www/run" + ln -fs /var/log/apache2 "$pkgdir/var/www/logs" + ln -fs /var/run/apache2 "$pkgdir/var/www/run" ln -fs /usr/lib/apache2 "$pkgdir/var/www/modules" + ln -fs /etc/apache2/conf.d "$pkgdir/var/www/conf.d" +} + +# include the builddir and apxs in -dev package +dev() { + default_dev + install -d "$subpkgdir"/usr/share/apache2/ \ + "$subpkgdir"/usr/sbin + mv "$pkgdir"/usr/sbin/apxs "$subpkgdir"/usr/sbin/ || return 1 + mv "$pkgdir"/usr/share/apache2/build "$subpkgdir"/usr/share/apache2/ } utils() { @@ -143,6 +156,25 @@ utils() { mv checkgid htcacheclean rotatelogs "$subpkgdir"/usr/sbin } +ssl() { + pkgdesc="SSL/TLS module for the Apache HTTP Server" + install="apache2-ssl.post-install" + depends="apache2 openssl" + install -d "$subpkgdir"/usr/lib/apache2 \ + "$subpkgdir"/etc/ssl/apache2 + mv "$pkgdir"/usr/lib/apache2/mod_ssl.so "$subpkgdir"/usr/lib/apache2/ \ + || return 1 + install -m644 -D "$srcdir"/ssl.conf "$subpkgdir"/etc/apache2/conf.d/ssl.conf +} + +ldap() { + pkgdesc="LDAP authentication/authorization module for the Apache HTTP Server" + url="http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html" + depends="apache2" + install -d "$subpkgdir"/usr/lib/apache2 + mv "$pkgdir"/usr/lib/apache2/mod_*ldap*.so "$subpkgdir"/usr/lib/apache2 +} + md5sums="c8ff2a07c884300bc7766a2e7f662d33 httpd-2.2.16.tar.bz2 db42cfcc18ae1c32aaaff2347e35b79d 02-rename-prefork-to-itk.patch 131408ad4dc7b18547b4e062e7e495ab 03-add-mpm-to-build-system.patch @@ -156,5 +188,6 @@ d9667fcd2ffecc63e446edd4d6666731 10-nice.patch e322b5211e49511cac6e40c86af1b1da apache2.confd 75fe4138b98fcffd01b8c8c077b944f3 apache2.logrotate 0261136ff734c3ae8dcf878a46ed5830 apache2.initd -ea8669bd3b913c4d30f16b5a11c82564 httpd.conf -af943bf52cec8088974084639661ba34 alpine.layout" +769748b26d008f427678ac2bbc7ab171 httpd.conf +5d0d024ca43571b863874ab871b2c109 ssl.conf +c66ff5f70260d5266e6803a59b39bd7f alpine.layout" diff --git a/testing/apache2/alpine.layout b/testing/apache2/alpine.layout index 7146971d2..99f20df52 100644 --- a/testing/apache2/alpine.layout +++ b/testing/apache2/alpine.layout @@ -7,7 +7,7 @@ libexecdir: ${prefix}/lib+ mandir: ${prefix}/share/man sysconfdir: /etc+ - datadir: ${usr}/share+ + datadir: ${prefix}/share+ installbuilddir: ${datadir}/build errordir: ${datadir}/error iconsdir: ${datadir}/icons diff --git a/testing/apache2/apache2-ssl.post-install b/testing/apache2/apache2-ssl.post-install new file mode 100644 index 000000000..d73b5fc62 --- /dev/null +++ b/testing/apache2/apache2-ssl.post-install @@ -0,0 +1,32 @@ +#!/bin/sh + +ssldir=/etc/ssl/apache2 +sslkey=$ssldir/server.key +sslcert=$ssldir/server.pem + +umask 077 + +if [ ! -f ${sslkey} ] ; then + openssl genrsa -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime 1024 > ${sslkey} 2> /dev/null +fi + +FQDN=`hostname -f` +if [ "x${FQDN}" = "x" ]; then + FQDN=localhost.localdomain +fi + +if [ ! -f ${sslcert} ] ; then +cat << EOF | openssl req -new -key ${sslkey} \ + -x509 -days 365 -set_serial $RANDOM \ + -out ${sslcert} 2>/dev/null +-- +SomeState +SomeCity +SomeOrganization +SomeOrganizationalUnit +${FQDN} +root@${FQDN} +EOF +fi + + diff --git a/testing/apache2/httpd.conf b/testing/apache2/httpd.conf index 5e0adee65..fab84b80b 100644 --- a/testing/apache2/httpd.conf +++ b/testing/apache2/httpd.conf @@ -216,9 +216,9 @@ LoadModule version_module modules/mod_version.so # # -# Load config files from the config directory "/etc/httpd/conf.d". +# Load config files from the config directory "/etc/apache2/conf.d". # -Include conf.d/*.conf +Include /etc/apache2/conf.d/*.conf # # ExtendedStatus controls whether Apache will generate "full" status diff --git a/testing/apache2/ssl.conf b/testing/apache2/ssl.conf new file mode 100644 index 000000000..8b156ebbc --- /dev/null +++ b/testing/apache2/ssl.conf @@ -0,0 +1,223 @@ +# +# This is the Apache server configuration file providing SSL support. +# It contains the configuration directives to instruct the server how to +# serve pages over an https connection. For detailing information about these +# directives see <URL:http://httpd.apache.org/docs/2.2/mod/mod_ssl.html> +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# + +LoadModule ssl_module modules/mod_ssl.so + +# +# When we also provide SSL we have to listen to the +# the HTTPS port in addition. +# +Listen 443 + +## +## SSL Global Context +## +## All SSL configuration in this context applies both to +## the main server and all SSL-enabled virtual hosts. +## + +# Pass Phrase Dialog: +# Configure the pass phrase gathering process. +# The filtering dialog program (`builtin' is a internal +# terminal dialog) has to provide the pass phrase on stdout. +SSLPassPhraseDialog builtin + +# Inter-Process Session Cache: +# Configure the SSL Session Cache: First the mechanism +# to use and second the expiring timeout (in seconds). +#SSLSessionCache dc:UNIX:/var/cache/mod_ssl/distcache +SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) +SSLSessionCacheTimeout 300 + +# Semaphore: +# Configure the path to the mutual exclusion semaphore the +# SSL engine uses internally for inter-process synchronization. +SSLMutex default + +# Pseudo Random Number Generator (PRNG): +# Configure one or more sources to seed the PRNG of the +# SSL library. The seed data should be of good random quality. +# WARNING! On some platforms /dev/random blocks if not enough entropy +# is available. This means you then cannot use the /dev/random device +# because it would lead to very long connection times (as long as +# it requires to make more entropy available). But usually those +# platforms additionally provide a /dev/urandom device which doesn't +# block. So, if available, use this one instead. Read the mod_ssl User +# Manual for more details. +SSLRandomSeed startup file:/dev/urandom 256 +SSLRandomSeed connect builtin +#SSLRandomSeed startup file:/dev/random 512 +#SSLRandomSeed connect file:/dev/random 512 +#SSLRandomSeed connect file:/dev/urandom 512 + +# +# Use "SSLCryptoDevice" to enable any supported hardware +# accelerators. Use "openssl engine -v" to list supported +# engine names. NOTE: If you enable an accelerator and the +# server does not start, consult the error logs and ensure +# your accelerator is functioning properly. +# +SSLCryptoDevice builtin +#SSLCryptoDevice ubsec + +## +## SSL Virtual Host Context +## + +<VirtualHost _default_:443> + +# General setup for the virtual host, inherited from global configuration +#DocumentRoot "/var/www/html" +#ServerName www.example.com:443 + +# Use separate log files for the SSL virtual host; note that LogLevel +# is not inherited from httpd.conf. +ErrorLog logs/ssl_error.log +TransferLog logs/ssl_access.log +LogLevel warn + +# SSL Engine Switch: +# Enable/Disable SSL for this virtual host. +SSLEngine on + +# SSL Protocol support: +# List the enable protocol levels with which clients will be able to +# connect. Disable SSLv2 access by default: +SSLProtocol all -SSLv2 + +# SSL Cipher Suite: +# List the ciphers that the client is permitted to negotiate. +# See the mod_ssl documentation for a complete list. +SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW + +# Server Certificate: +# Point SSLCertificateFile at a PEM encoded certificate. If +# the certificate is encrypted, then you will be prompted for a +# pass phrase. Note that a kill -HUP will prompt again. A new +# certificate can be generated using the genkey(1) command. +SSLCertificateFile /etc/ssl/apache2/server.pem + +# Server Private Key: +# If the key is not combined with the certificate, use this +# directive to point at the key file. Keep in mind that if +# you've both a RSA and a DSA private key you can configure +# both in parallel (to also allow the use of DSA ciphers, etc.) +SSLCertificateKeyFile /etc/ssl/apache2/server.key + +# Server Certificate Chain: +# Point SSLCertificateChainFile at a file containing the +# concatenation of PEM encoded CA certificates which form the +# certificate chain for the server certificate. Alternatively +# the referenced file can be the same as SSLCertificateFile +# when the CA certificates are directly appended to the server +# certificate for convinience. +#SSLCertificateChainFile /etc/ssl/apache2/server-chain.crt + +# Certificate Authority (CA): +# Set the CA certificate verification path where to find CA +# certificates for client authentication or alternatively one +# huge file containing all of them (file must be PEM encoded) +#SSLCACertificateFile /etc/ssl/apache2/ca-bundle.crt + +# Client Authentication (Type): +# Client certificate verification type and depth. Types are +# none, optional, require and optional_no_ca. Depth is a +# number which specifies how deeply to verify the certificate +# issuer chain before deciding the certificate is not valid. +#SSLVerifyClient require +#SSLVerifyDepth 10 + +# Access Control: +# With SSLRequire you can do per-directory access control based +# on arbitrary complex boolean expressions containing server +# variable checks and other lookup directives. The syntax is a +# mixture between C and Perl. See the mod_ssl documentation +# for more details. +#<Location /> +#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \ +# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ +# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \ +# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \ +# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \ +# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ +#</Location> + +# SSL Engine Options: +# Set various options for the SSL engine. +# o FakeBasicAuth: +# Translate the client X.509 into a Basic Authorisation. This means that +# the standard Auth/DBMAuth methods can be used for access control. The +# user name is the `one line' version of the client's X.509 certificate. +# Note that no password is obtained from the user. Every entry in the user +# file needs this password: `xxj31ZMTZzkVA'. +# o ExportCertData: +# This exports two additional environment variables: SSL_CLIENT_CERT and +# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the +# server (always existing) and the client (only existing when client +# authentication is used). This can be used to import the certificates +# into CGI scripts. +# o StdEnvVars: +# This exports the standard SSL/TLS related `SSL_*' environment variables. +# Per default this exportation is switched off for performance reasons, +# because the extraction step is an expensive operation and is usually +# useless for serving static content. So one usually enables the +# exportation for CGI and SSI requests only. +# o StrictRequire: +# This denies access when "SSLRequireSSL" or "SSLRequire" applied even +# under a "Satisfy any" situation, i.e. when it applies access is denied +# and no other module can change it. +# o OptRenegotiate: +# This enables optimized SSL connection renegotiation handling when SSL +# directives are used in per-directory context. +#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire +<Files ~ "\.(cgi|shtml|phtml|php3?)$"> + SSLOptions +StdEnvVars +</Files> +<Directory "/var/www/cgi-bin"> + SSLOptions +StdEnvVars +</Directory> + +# SSL Protocol Adjustments: +# The safe and default but still SSL/TLS standard compliant shutdown +# approach is that mod_ssl sends the close notify alert but doesn't wait for +# the close notify alert from client. When you need a different shutdown +# approach you can use one of the following variables: +# o ssl-unclean-shutdown: +# This forces an unclean shutdown when the connection is closed, i.e. no +# SSL close notify alert is send or allowed to received. This violates +# the SSL/TLS standard but is needed for some brain-dead browsers. Use +# this when you receive I/O errors because of the standard approach where +# mod_ssl sends the close notify alert. +# o ssl-accurate-shutdown: +# This forces an accurate shutdown when the connection is closed, i.e. a +# SSL close notify alert is send and mod_ssl waits for the close notify +# alert of the client. This is 100% SSL/TLS standard compliant, but in +# practice often causes hanging connections with brain-dead browsers. Use +# this only for browsers where you know that their SSL implementation +# works correctly. +# Notice: Most problems of broken clients are also related to the HTTP +# keep-alive facility, so you usually additionally want to disable +# keep-alive for those clients, too. Use variable "nokeepalive" for this. +# Similarly, one has to force some clients to use HTTP/1.0 to workaround +# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and +# "force-response-1.0" for this. +SetEnvIf User-Agent ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + +# Per-Server Logging: +# The home of a custom SSL log file. Use this when you want a +# compact non-error SSL logfile on a virtual host basis. +CustomLog logs/ssl_request.log \ + "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + +</VirtualHost> + |