от Bondoff(20-02-2005)

рейтинг (9)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Инсталиране на Apache с поддръжа на SSL/TLS

Първата стъпка, която трабва да предприемем, както казахме в Част I, е да си инсталираме Apache 2 уеб сървър, и да създадем в системата потребител и група с име “apache”.
Преди да изпълним командата ./configure, със съответните опции, ще наблегна на опциите “--enable-ssl” “--enable-setenvif”, което означава, че освен mod_ssl, ще имате възможност и да включвате модулът mod_setenvif. Това е необходимо за да има съвместимост на сървъра с някои версии на MS Internet Explorer.

./configure \ 
 --prefix=/usr/local/apache2 \ 
 --with-mpm=prefork \ 
 --enable-ssl \  
 --disable-charset-lite \ 
 --disable-include \ 
 --disable-env \ 
 --enable-setenvif \ 
 --disable-status \ 
 --disable-autoindex \ 
 --disable-asis \ 
 --disable-cgi \ 
 --disable-negotiation \ 
 --disable-imap \ 
 --disable-actions \ 
 --disable-userdir \ 
 --disable-alias \ 
 --disable-so

След конфигурацията следва стандартна процедура:

make
 su
 umask 022
 make install
 chown -R root:sys /usr/local/apache2
Конфигуриране на SSL/TLS

Преди да стартираме Apache за първи път, естествено ще трябва да го конфигурираме и също така, ще създадем някаква малка уеб страница за провеждане на тестове. Като начало е неободимо да изпълним следното (като root):


  • Създаваме малка уеб страница, която ще бъде достигана през TLS/SSL:

umask 022
 mkdir /www
 echo "Test \  
 Test works." > /www/index.html
 chown -R root:sys /www
  • Променете настройките на конфигурационния файл на Apache 2 (който в нашия случай се намира в /usr/local/apache2/conf/httpd.conf) с посочените:

# =================================================
 # Basic settings
 # =================================================
 User apache
 Group apache
 ServerAdmin webmaster@www.seccure.lab   
 ServerName www.seccure.lab
 UseCanonicalName Off
 ServerSignature Off
 HostnameLookups Off
 ServerTokens Prod
 ServerRoot "/usr/local/apache2"
 DocumentRoot "/www"
 PidFile /usr/local/apache2/logs/httpd.pid
 ScoreBoardFile /usr/local/apache2/logs/httpd.scoreboard
 
     DirectoryIndex index.html
 
 
 # =================================================
 # HTTP and performance settings
 # =================================================
 Timeout 300
 KeepAlive On
 MaxKeepAliveRequests 100
 KeepAliveTimeout 30
 
     MinSpareServers 5
     MaxSpareServers 10
     StartServers 5
     MaxClients 150
     MaxRequestsPerChild 0
 
 
 # =================================================
 # Access control
 # =================================================
 
     Options None
     AllowOverride None
     Order deny,allow
     Deny from all
 
 
     Order allow,deny
     Allow from all
 
 
 # =================================================
 # MIME encoding
 # =================================================
 
     TypesConfig /usr/local/apache2/conf/mime.types
 
 DefaultType text/plain
 
     AddEncoding x-compress              .Z
     AddEncoding x-gzip                  .gz .tgz
     AddType application/x-compress      .Z
     AddType application/x-gzip          .gz .tgz
     AddType application/x-tar           .tgz
     AddType application/x-x509-ca-cert  .crt
     AddType application/x-pkcs7-crl     .crl
 
 
 # =================================================
 # Logs
 # =================================================
 LogLevel warn
 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
 LogFormat "%h %l %u %t \"%r\" %>s %b" common
 LogFormat "%{Referer}i -> %U" referer
 LogFormat "%{User-agent}i" agent
 ErrorLog /usr/local/apache2/logs/error_log
 CustomLog /usr/local/apache2/logs/access_log combined
 CustomLog logs/ssl_request_log \  
 "%t %h %{HTTPS}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x \  
 %{SSL_CIPHER_USEKEYSIZE}x %{SSL_CLIENT_VERIFY}x \"%r\" %b"
 
 # =================================================
 # SSL/TLS settings
 # =================================================
 Listen 0.0.0.0:443
 
 SSLEngine on
 SSLOptions +StrictRequire
 
 
     SSLRequireSSL
 
 
 SSLProtocol -all +TLSv1 +SSLv3
 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
 
 SSLMutex file:/usr/local/apache2/logs/ssl_mutex
 
 SSLRandomSeed startup file:/dev/urandom 1024
 SSLRandomSeed connect file:/dev/urandom 1024
 
 SSLSessionCache shm:/usr/local/apache2/logs/ssl_cache_shm
 SSLSessionCacheTimeout 600
 
 SSLPassPhraseDialog builtin
 SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
 SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
 
 SSLVerifyClient none
 SSLProxyEngine off
 
 
     AddType application/x-x509-ca-cert      .crt
     AddType application/x-pkcs7-crl         .crl
 
 
 SetEnvIf User-Agent ".*MSIE.*" \  
   nokeepalive ssl-unclean-shutdown \  
   downgrade-1.0 force-response-1.0

Забележка: Естествено ще трябва да промените някои от настройките във файла като например името на уеб сървъра, e-mail на администратора и т.н.

  • Създаваме директория където ще съхраняваме частния ключ на уеб сървъра, сертификатите и списъка с анулираните сертификати (CRLs):

umask 022
 mkdir /usr/local/apache2/conf/ssl.key
 mkdir /usr/local/apache2/conf/ssl.crt
 mkdir /usr/local/apache2/conf/ssl.crl
  • Създаваме self-signed сертификат на сървъра (моля използвайте този сертификат само за тест на сървъра си – оригиналния сертификат трябва даполучите от оригинален СА сървър, например Verisign):

openssl req \ 
 -new \ 
 -x509 \ 
 -days 30 \ 
 -keyout /usr/local/apache2/conf/ssl.key/server.key \ 
 -out /usr/local/apache2/conf/ssl.crt/server.crt \ 
 -subj '/CN=Test-Only Certificate'



За сега ще стпрем до тук. В последната част на статията, ще видите как се тества сървър и ще посочим някои методи за търсене и премахване на грешки





<< Нелегитимен достъп до ресурси (уеб-базирани пощенски услуги) | Promqna firmware-a na Linksys WRT54G s Linux >>