diff --git a/build/exe/doliwamp/.cvsignore b/build/exe/doliwamp/.cvsignore index 98e6ef67fad8af56cb3721edbd420b3d6fcc0bb1..2c52e4ff5ddd7c59105f1bec4c353c21a4622b78 100644 --- a/build/exe/doliwamp/.cvsignore +++ b/build/exe/doliwamp/.cvsignore @@ -1 +1,2 @@ *.db +ca_dolibarr.key diff --git a/build/exe/doliwamp/builddemosslfiles.bat b/build/exe/doliwamp/builddemosslfiles.bat new file mode 100644 index 0000000000000000000000000000000000000000..452f5d2c56bbc9cdbfc07d05055f16a54c28fccf --- /dev/null +++ b/build/exe/doliwamp/builddemosslfiles.bat @@ -0,0 +1,23 @@ +@echo off +REM Launch Dolibarr demo SSL key generation +REM --------------------------------------- + +REM Build private key +WAMPROOT\bin\apache\apacheWAMPAPACHEVERSION\bin\openssl genrsa -out myserver.key 512 + +REM Set permissions on file +REM chmod 400 myserver.key + +REM Create CSR file +WAMPROOT\bin\apache\apacheWAMPAPACHEVERSION\bin\openssl req -config openssl.conf -new -key myserver.key -out myserver.csr + +REM Create empty dir and files +echo 01 > tmp\serial +touch tmp\index.txt +touch tmp\index.txt.attr + +REM Certify request +WAMPROOT\bin\apache\apacheWAMPAPACHEVERSION\bin\openssl ca -config openssl.conf -out myserver.crt -infiles myserver.csr + +REM Check everything is OK +WAMPROOT\bin\apache\apacheWAMPAPACHEVERSION\bin\openssl verify -CAfile ca_demo_dolibarr.crt myserver.crt diff --git a/build/exe/doliwamp/ca_demo_dolibarr.crt b/build/exe/doliwamp/ca_demo_dolibarr.crt new file mode 100644 index 0000000000000000000000000000000000000000..0c68cd5725653127c2fb3d349a9aaa853d469c11 --- /dev/null +++ b/build/exe/doliwamp/ca_demo_dolibarr.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICozCCAk2gAwIBAgIJALGFnnUnBWt7MA0GCSqGSIb3DQEBBQUAMGwxCzAJBgNV +BAYTAkZSMQwwCgYDVQQIEwNJREYxDjAMBgNVBAcTBVBhcmlzMREwDwYDVQQKEwhE +b2xpYmFycjEUMBIGA1UECxMLRG9saWJhcnIgQ0ExFjAUBgNVBAMTDURvbGliYXJy +IHRlYW0wHhcNMDkwODE5MjMzNzEwWhcNMzcwMTA0MjMzNzEwWjBsMQswCQYDVQQG +EwJGUjEMMAoGA1UECBMDSURGMQ4wDAYDVQQHEwVQYXJpczERMA8GA1UEChMIRG9s +aWJhcnIxFDASBgNVBAsTC0RvbGliYXJyIENBMRYwFAYDVQQDEw1Eb2xpYmFyciB0 +ZWFtMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANZnbCPyab6x4BRWZbKc8zssC1Lt +5DfrnOiUWNyw71AfW5Kvyk0RJIvjHLWz8+2kEqCmohjD0qo1ATQLotrx3BcCAwEA +AaOB0TCBzjAdBgNVHQ4EFgQUjMdLdKeYrp9gvezCv+PTUdtrZrwwgZ4GA1UdIwSB +ljCBk4AUjMdLdKeYrp9gvezCv+PTUdtrZryhcKRuMGwxCzAJBgNVBAYTAkZSMQww +CgYDVQQIEwNJREYxDjAMBgNVBAcTBVBhcmlzMREwDwYDVQQKEwhEb2xpYmFycjEU +MBIGA1UECxMLRG9saWJhcnIgQ0ExFjAUBgNVBAMTDURvbGliYXJyIHRlYW2CCQCx +hZ51JwVrezAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA0EAX9IDUlhFvorE +dNxiWODKGsZy+UirzLwVZnEZNcgfOggL9VJfhqJcks+8nNflGHsWP8ciPb2itYEb +teSYLelgaA== +-----END CERTIFICATE----- diff --git a/build/exe/doliwamp/ca_demo_dolibarr.key b/build/exe/doliwamp/ca_demo_dolibarr.key new file mode 100644 index 0000000000000000000000000000000000000000..300e7cbd419870ce9d3c4a6d16925d0298428251 --- /dev/null +++ b/build/exe/doliwamp/ca_demo_dolibarr.key @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBPAIBAAJBANZnbCPyab6x4BRWZbKc8zssC1Lt5DfrnOiUWNyw71AfW5Kvyk0R +JIvjHLWz8+2kEqCmohjD0qo1ATQLotrx3BcCAwEAAQJBAI9D7G7YvPA/y4vLb4k6 +dw1DEQ4JCEaVmfOPrRFK6Z6PHGbEMPwOO4tKyZO4dOJXJ2cwLpfo7zZ3egvun7t3 +7wECIQDvPIbwMJKhOU3jTcyv8hJ07V9JWva7znZsMB7iUSydiQIhAOVtciL43Nfq +EcglY7UwKFWYk9KpRfxkW28dUKu2/uSfAiBrp24FWaYx/Kpq9dB9AE6D5Wkyhkdv +PboWdxT+vI56GQIhANo0RLjETm7AfZcJEJLUMZhvXDCgtCJ/ZIMCs6YNjtHrAiEA +2odSzx9oUC00Ir7l5JeiUH/InpuU7Hd1Y/74OvaUYKM= +-----END RSA PRIVATE KEY----- diff --git a/build/exe/doliwamp/httpd.conf.install b/build/exe/doliwamp/httpd.conf.install index 491eb921d4a167fc25f62beca23ee5e7aaa4f0e0..7fc0e3752b31cae27b3408bd8d03ce877823caa9 100644 --- a/build/exe/doliwamp/httpd.conf.install +++ b/build/exe/doliwamp/httpd.conf.install @@ -51,7 +51,7 @@ ServerRoot "WAMPROOT/bin/apache/apache2.2.6" # #Listen 12.34.56.78:80 Listen WAMPAPACHEPORT -Listen 444 +Listen WAMPAPACHEPORTSSL # # Dynamic Shared Object (DSO) Support @@ -156,7 +156,17 @@ ServerAdmin webmaster@localhost # # If your host doesn't have a registered DNS name, enter its IP address here. # -ServerName localhost:81 +ServerName localhost + +# +# ServerTokens +# This directive configures what you return as the Server HTTP response +# Header. The default is 'Full' which sends information about the OS-Type +# and compiled in modules. +# Set to one of: Full | OS | Minor | Minimal | Major | Prod +# where Full conveys the most information, and Prod the least. +# +#ServerTokens Prod # # DocumentRoot: The directory out of which you will serve your @@ -505,4 +515,194 @@ SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> -Include "WAMPROOT/alias/*" \ No newline at end of file + + +## +## SSL Global Context +## +## All SSL configuration in this context applies both to +## the main server and all SSL-enabled virtual hosts. +## + +# +# Some MIME-types for downloading Certificates and CRLs +# +AddType application/x-x509-ca-cert .crt +AddType application/x-pkcs7-crl .crl + +# 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 "dbm:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache" +#SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)" +#SSLSessionCacheTimeout 300 + +# Semaphore: +# Configure the path to the mutual exclusion semaphore the +# SSL engine uses internally for inter-process synchronization. +#SSLMutex "file:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_mutex" + +## +## SSL Virtual Host Context +## + +<VirtualHost _default_:444> + +# SSL Engine Switch: +# Enable/Disable SSL for this virtual host. +SSLEngine on + +# General setup for the virtual host +DocumentRoot "WAMPROOT/www/" +ServerName localhost:444 +ServerAdmin admin@localhost +ErrorLog "WAMPROOT/logs/apache_error_ssl.log" +TransferLog "WAMPROOT/logs/apache_transfer_ssl.log" +CustomLog "WAMPROOT/logs/apache_access_ssl.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + +# 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:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL + +# 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. Keep +# in mind that if you have both an RSA and a DSA certificate you +# can configure both in parallel (to also allow the use of DSA +# ciphers, etc.) +SSLCertificateFile "WAMPROOT/server.crt" + +# 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 "WAMPROOT/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 "WAMPROOT/server-ca.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) +# Note: Inside SSLCACertificatePath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCACertificatePath "WAMPROOT/ssl.crt" +#SSLCACertificateFile "WAMPROOT/ca-bundle.crt" + +# Certificate Revocation Lists (CRL): +# Set the CA revocation path where to find CA CRLs for client +# authentication or alternatively one huge file containing all +# of them (file must be PEM encoded) +# Note: Inside SSLCARevocationPath you need hash symlinks +# to point to the certificate files. Use the provided +# Makefile to update the hash symlinks after changes. +#SSLCARevocationPath "WAMPROOT/ssl.crl" +#SSLCARevocationFile "WAMPROOT/ca-bundle.crl" + +# 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 +#<FilesMatch "\.(cgi|shtml|phtml|php)$"> +# SSLOptions +StdEnvVars +#</FilesMatch> +#<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/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. +BrowserMatch ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + +</VirtualHost> + + +Include "WAMPROOT/alias/*" diff --git a/build/exe/doliwamp/index.php.install b/build/exe/doliwamp/index.php.install index d2e53d6875e7d76226824bafe1326ac098ef0a56..44199db52d0d5317ed459ffa7eb234c9daec526c 100644 --- a/build/exe/doliwamp/index.php.install +++ b/build/exe/doliwamp/index.php.install @@ -19,7 +19,9 @@ $appDir = '../apps/'; // we set version of applications $phpVersion = 'WAMPPHPVERSION'; +if ($phpVersion != phpversion()) $phpVersion .= ' ('.phpversion().')'; $apacheVersion = 'WAMPAPACHEVERSION'; +if ($apacheVersion != $_SERVER["SERVER_SOFTWARE"]) $apacheVersion .= ' ('.$_SERVER["SERVER_SOFTWARE"].')'; $mysqlVersion = 'WAMPMYSQLVERSION'; $apachePort = 'WAMPAPACHEPORT'; diff --git a/build/exe/doliwamp/openssl.conf b/build/exe/doliwamp/openssl.conf new file mode 100644 index 0000000000000000000000000000000000000000..c053b07c508ece6a9ef329c34370bf02518baa49 --- /dev/null +++ b/build/exe/doliwamp/openssl.conf @@ -0,0 +1,90 @@ +#################################################################### +# Sample OpenSSL configuration file # +#################################################################### + +RANDFILE = C:\\dolibarr\\tmp\\.rnd + +[ ca ] +default_ca = CA_default # The default ca section + +[ CA_default ] +dir = C:\\dolibarr +certs = $dir\\certs # Where the issued certs are kept +crl_dir = $dir\\crl # Where the issued crl are kept +database = $dir\\tmp\\index.txt # database index file. +new_certs_dir = $dir\\tmp # default place for new certs. +certificate = $dir\\ca_demo_dolibarr.crt # The CA certificate +serial = $dir\\tmp\\serial # The current serial number +crl = $dir\\crl.pem # The current CRL +private_key = $dir\\ca_demo_dolibarr.key # The CA private key +RANDFILE = $dir\\tmp\\.rand # private random number file + +x509_extensions = usr_cert # The extentions to add to the cert +default_days = 7300 # how long to certify for +default_crl_days = 30 # how long before next CRL +default_md = md5 # which md to use. +preserve = no # keep passed DN ordering +policy = policy_anything + +#################################################################### + +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +#################################################################### +[ req ] +default_bits = 1024 +default_keyfile = myserver.key +distinguished_name = req_distinguished_name +attributes = req_attributes +x509_extensions = v3_ca # The extentions to add to the self signed cert +string_mask = nombstr + +[ req_distinguished_name ] +countryName = Country Name (2 letter code) +countryName_default = +countryName_min = 2 +countryName_max = 2 +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = Some-State +localityName = Locality Name (eg, city) +0.organizationName = Organization Name (eg, company) +0.organizationName_default = MyCompany +organizationalUnitName = Organizational Unit Name (eg, section) +organizationalUnitName_default = Web administrators +commonName = Common Name (eg, YOUR name) +commonName_default = Webmaster +commonName_max = 64 +emailAddress = Email Address +emailAddress_max = 40 + +[ req_attributes ] +challengePassword = A challenge password +challengePassword_min = 4 +challengePassword_max = 20 +unstructuredName = An optional company name + +[ usr_cert ] +basicConstraints = CA:FALSE +nsComment = "OpenSSL Generated Certificate" +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer:always + +[ v3_req ] +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +[ v3_ca ] +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always +basicConstraints = CA:true + +[ crl_ext ] +authorityKeyIdentifier = keyid:always,issuer:always +