SSL

Установка apache из портов в терминале набираем:

cd /usr/ports/www/apache22/
make install clean
После установки конфигурационный файл apache будет находится в каталоге /usr/local/etc/apache22/ с именем httpd.conf с настройками по умолчанию. В этот конфигурационный файл нужно внести изменения, для этого в терминале набираем:

vi /usr/local/etc/apache22/httpd.conf

Далее вносим изменения в этот файл:

#Указываем серверу apache слушать 80 порт со всех ip - адресов
Listen 80

#Указываем где будут храниться файлы
DocumentRoot "/usr/local/www/apache22/data"

#Описываем общие правила для каталогов
<Directory />
    Options None
    AllowOverride all
    Order allow,deny
    Deny from all
</Directory>

#Описываем каталог где будут хранится наши файлы
<Directory "/usr/local/www/apache22/data/wandmagic.ru/">
    Order allow,deny
    Allow from all
</Directory>

#Указываем путь к конфигурационному файлу, в котором будут храниться настройки SSL соединений
Include etc/apache22/extra/httpd-ssl.conf
Теперь нужно создать сертификаты и ключи. Для этого нужно создать файл, с командами генерации сертификатов:

#Создаем каталог для хранения сертификатов
mkdir /tmp/cert

#Создаем файл генерации сертификатов и ключей
vi /tmp/cert/gen_cert
Вносим в файл /tmp/cert/gen_cert следующее:

#!/bin/sh
openssl genrsa -des3 -rand /dev/random -out server.key 1024
openssl rsa -in server.key -out server.pem
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey \
server.key -out server.crt
После чего делаем файл исполняемым chmod 777 /tmp/cert/gen_cert и запускаем на выполнение, в процессе выполнения будет задано несколько вопросов такие как название организации, имя и email :

/tmp/cert/gen_cert

#Процесс выполнения файла
2048 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
...............++++++
.....++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
Enter pass phrase for server.key:
writing RSA key
Enter pass phrase for server.key:
You are about to be asked to enter information that will be 
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished 
Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SM8
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:wandmagic.ru
Email Address []:sm8-postbox@ya.ru

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=/C=RU/ST=Russia/L=Moscow/O=SM8/CN=wandmagic.ru/
emailAddress=sm8-postbox@ya.ru
Getting Private key
Enter pass phrase for server.key:
Далее нужно переместить получившиеся файлы в каталог /usr/local/etc/apache22/ можно и любой другой, но нужно будет тогда сменить пути на свои при дальнейшей настройки:

mv /tmp/cert/server.* /usr/local/etc/apache22/
Теперь нужно отредактировать файл /usr/local/etc/apache22/extra/httpd-ssl.conf:

vi /usr/local/etc/apache22/extra/httpd-ssl.conf
Подкорректировав следующим образом:

# Указываем серверу apache слушать 443 порт со всех ip - адресов
Listen 443

# Добавляем типы, для сертефикатов
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

# На запрос пароля выполняем скрипт
SSLPassPhraseDialog |/usr/local/etc/apache22/echo

# Параметры SSL кэша
SSLSessionCache        shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout  300
SSLMutex  file:/var/run/ssl_mutex
	
# Описываем виртуальный хост
< VirtualHost *:443>
DocumentRoot "/usr/local/www/apache22/data/wandmagic.ru/"
ErrorLog /var/log/httpd-error.log
TransferLog /var/log/httpd-access.log
	
# Включаем режим SSL и указываем пути к сертефикатам
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/etc/apache22/server.crt
SSLCertificateKeyFile /usr/local/etc/apache22/server.key

< FilesMatch "\.(cgi|shtml|phtml|php)$">
 SSLOptions +StdEnvVars
< /FilesMatch>

< Directory "/usr/local/www/apache22/cgi-bin">
 SSLOptions +StdEnvVars
< /Directory>

BrowserMatch ".*MSIE.*" \
      nokeepalive ssl-unclean-shutdown \
      downgrade-1.0 force-response-1.0
CustomLog /var/log/httpd-ssl_request.log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
< /VirtualHost>
В описании был файл /usr/local/etc/apache22/echo, предназначен он для вывода на экран пароля от секретного ключа. Соответственно его не нужно предварительно создать. Что бы то выводил секретную фразу:

vi /usr/local/etc/apache22/echo
Со следующим содержимым:

#!/bin/sh
/bin/echo <ваша парольная фраза при создании сертификатов>
Далее нужно назначить ему соответствующие права, что бы доступ бы только root'а
chmod 700 /usr/local/etc/apache22/echo
chown root:wheel /usr/local/etc/apache22/echo
Теперь при запуске или перезапуске apache не будет просить парольную фразу. Для запуска apache нужно выполнить следующий скрипт с командой start:

/usr/local/etc/rc.d/apache22 start
Теперь веб сервер будет принимать соединения по протоколу https.
Прочли: 1756 | Изменено: 18 сентября 2011 | Добавлено: 02 апреля 2011 | На главную