MJU Vlada RS SIGEN-CA Overitelj na MJU English

Nastavitve v strežniku Apache za uporabo SSL

Strežnik določa, kakšna bo povezava z brskalnikom. Protokol SSL lahko uporabljamo na različne načine:
izbiramo verzijo protokola (SSLV2 ali SSLV3 ali TLSV1),
izbiramo algoritme in dolžine ključev,
ne overjamo klientov (brskalnikov) ali pa od njih zahtevamo digitalno potrdilo,
dovoljujemo povezavo samo brskalnikom, ki imajo digitalno potrdilo določenega overitelja in kontroliramo dostop po poljih v digitalnem potrdilu.

Navodila za ukaze v konfiguracijski datoteki, ki se nanašajo na SSL, bomo našli v priročniku za mod_ssl.

Kot primer poglejmo del konfiguracijske datoteke za strežnik, ki posluša na naslednjih vratih in na vsakih od njih uporablja drugačen način povezave z brskalnikom:

port konfiguracija
80 brez SSL, običajen strežnik
7443 SSL - dovoljuje povezave z vsemi brskalniki tako po protokolu SSLv2 kot SSLv3, s šibkimi in močnimi ključi, brskalnikov ne overja
8443 SSL - dovoljuje povezave z brskalniki samo s SSLv3 (oziroma TLSv1) in močnimi ključi, brskalnikov ne overja
6443 SSL - dovoljuje povezave z brskalniki samo s SSLv3 (oziroma TLSv1) in močnimi ključi, brskalnik mora imeti digitalno potrdilo istega overitelja kot ga ima strežnik
443 SSL - dovoljuje povezave z brskalniki samo s SSLv3 (oziroma TLSv1) in močnimi ključi, brskalnik mora imeti digitalno potrdilo istega overitelja kot ga ima strežnik, dostop dovoljen samo nekaterim uporabnikom

V zadnjih dveh primerih, ko overjamo potrdila klientov, je potrebno tudi preveriti, ali ta potrdila niso bila preklicana. Strežniku moramo omogočiti dostop do CRL SIGEN-CA - na datoteko /pot-do-apache/conf/ssl.crl/crl1.crl v rednih presledkih nalagamo zadnji seznam preklicanih potrdil SIGEN-CA (glej tudi FAQ za strežnike).


# najprej dolocimo IP racunalnika in standardni port
#
Listen 222.222.222.1:80
Port 80
##
##  Dolocitev portov za dodatne virtualne streznike, ki bodo
##  uporabljali SSL (https)
##
<IfDefine SSL>
Listen 80
Listen 6443
Listen 7443
Listen 8443
Listen 443
</IfDefine>
#
#   vkljucitev mime koncnic za prevzem digitalnih potrdil
#
<IfDefine SSL>
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
</IfDefine>

<IfModule mod_ssl.c>

#  Primer nastavitev za mod_ssl

SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/pot-do-apache/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/pot-do-apache/logs/ssl_mutex
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLLog      /pot-do-apache/logs/ssl_engine_log
SSLLogLevel info
</IfModule>

<IfDefine SSL>

##
##  Nastavitve virtualnih streznikov (SSL)
##
#-----------------------------------
<VirtualHost _default_:7443>
#-----------------------------------
#
DocumentRoot /pot-do-apache/testdoc
ScriptAlias /cda-cgi/ "/pot-do-apache/cgi/"
ServerName www.test.si
ServerAdmin webmaster@test.si
ErrorLog /pot-do-apache/logs/7443_error_log
TransferLog /pot-do-apache/logs/7443_access_log
SSLEngine on
#
#  Dovolimo tudi sibke algoritme (LOW) in SSLV2
#  kar ni priporocljivo!
#  
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:-eNULL
SSLProtocol all
#
SSLCertificateFile /pot-do-apache/conf/ssl.crt/apache.crt
SSLCertificateKeyFile /pot-do-apache/conf/ssl.key/apache.kljuc
SSLCACertificateFile    /pot-do-apache/conf/ssl.crt/ca.crt
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /pot-do-apache/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

#-----------------------------------
<VirtualHost _default_:8443>
#-----------------------------------
#
DocumentRoot /pot-do-apache/htdocs
ScriptAlias /cda-cgi/ "/pot-do-apache/cgi/"
ServerName www.test.si
ServerAdmin webmaster@test.si
ErrorLog /pot-do-apache/logs/8443_error_log
TransferLog /pot-do-apache/logs/8443_access_log
SSLEngine on

#  Ne dovolimo sibkih algoritmov (LOW) in SSLV2
#  
SSLCipherSuite ALL:!ADH:!NULL:+HIGH:+MEDIUM:+SSLv3:-EXP:-LOW:-SSLv2
SSLProtocol all -SSLv2
#
SSLCertificateFile /pot-do-apache/conf/ssl.crt/apache.crt
SSLCertificateKeyFile /pot-do-apache/conf/ssl.key/apache.kljuc
SSLCACertificateFile    /pot-do-apache/conf/ssl.crt/ca.crt
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /pot-do-apache/logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

#-----------------------------------
<VirtualHost _default_:6443>
#-----------------------------------
DocumentRoot /pot-do-apache/docs
ScriptAlias /cda-cgi/ "/pot-do-apache/cgi/"
ServerName www.test.si
ServerAdmin webmaster@test.si
ErrorLog /pot-do-apache/logs/6443_error_log
TransferLog /pot-do-apache/logs/6443_access_log
SSLEngine on

#  Ne dovolimo sibkih algoritmov (LOW) in SSLV2
#  
SSLCipherSuite ALL:!ADH:!NULL:+HIGH:+MEDIUM:+SSLv3:-EXP:-LOW:-SSLv2
SSLProtocol all -SSLv2
#
#   zahtevamo digitalna potrdila od brskalnikov
#
SSLVerifyClient require
SSLVerifyDepth 1
#
SSLCertificateFile /pot-do-apache/conf/ssl.crt/apache.crt
SSLCertificateKeyFile /pot-do-apache/conf/ssl.key/apache.kljuc
SSLCACertificateFile    /pot-do-apache/conf/ssl.crt/ca.crt
SSLCARevocationFile /pot-do-apache/conf/ssl.crl/crl1.crl
SSLOptions +ExportCertData +StdEnvVars
</VirtualHost>

#-----------------------------------
<VirtualHost _default_:443>
#-----------------------------------
DocumentRoot /pot-do-apache/docs
ScriptAlias /cda-cgi/ "/pot-do-apache/cgi/"
ServerName www.test.si
ServerAdmin webmaster@test.si
ErrorLog /pot-do-apache/logs/443_error_log
TransferLog /pot-do-apache/logs/443_access_log
SSLEngine on

#  Ne dovolimo sibkih algoritmov (LOW) in SSLV2
#  
SSLCipherSuite ALL:!ADH:!NULL:+HIGH:+MEDIUM:+SSLv3:-EXP:-LOW:-SSLv2
SSLProtocol all -SSLv2
#
#   zahtevamo digitalna potrdila od brskalnikov
#
SSLVerifyClient require
SSLVerifyDepth 1
#
SSLCertificateFile /pot-do-apache/conf/ssl.crt/apache.crt
SSLCertificateKeyFile /pot-do-apache/conf/ssl.key/apache.kljuc
SSLCACertificateFile    /pot-do-apache/conf/ssl.crt/ca.crt
SSLCARevocationFile /pot-do-apache/conf/ssl.crl/crl1.crl
SSLOptions +ExportCertData +StdEnvVars 
#
#     dovolimo dostop samo uporabnikoma Martin Krpan in Peter Klepec
#

<Location />
SSLRequire ( %{SSL_CLIENT_S_DN} eq "/C=SI/O=state-institutions/OU=Web Certificates/OU=Web Users/CN=Martin Krpan" ) \
            or ( %{SSL_CLIENT_S_DN} eq
"/C=SI/O=state-institutions/OU=Web Certificates/OU=Web Users/CN=Peter Klepec" )
</Location>
</VirtualHost>
#-----------------------------------

</IfDefine>

© Overitelj na Ministrstvu za javno upravo RS