summaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-08-10 09:48:55 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-08-10 09:48:55 +0000
commitc0367e7f1e95ef668455892afc61ebbbc53a35d9 (patch)
treec93e79cc90f1147a5555882961458e5622a772c1 /testing
parent4f935d99aa754ff7b8b21b489be6caf9529f9a54 (diff)
downloadaports-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/APKBUILD47
-rw-r--r--testing/apache2/alpine.layout2
-rw-r--r--testing/apache2/apache2-ssl.post-install32
-rw-r--r--testing/apache2/httpd.conf4
-rw-r--r--testing/apache2/ssl.conf223
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>
+