Настройка HTTPS: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Новая: ==Создание саподписанного SSL сертификата== Делаем следующее:<pre> # cd /etc/ssl # mkdir db # mkdir ca # mkdir clients # touch /etc/ssl/db...)
 
(Создание файла конфигурации)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 10: Строка 10:
 
<pre>#!/bin/sh
 
<pre>#!/bin/sh
 
openssl req -new -newkey rsa:4096 -nodes -keyout ./ca/ca.key -x509 -days 3650 \
 
openssl req -new -newkey rsa:4096 -nodes -keyout ./ca/ca.key -x509 -days 3650 \
   -subj /C=RU/ST=Russia/L=Vologda/O=EI/OU=IT/CN=volmed.org.ru/emailAddress=misk@volmed.org.ru -out ./ca/ca.crt</pre>
+
   -subj /C=RU/ST=Russia/L=Vologda/O=MIAC/OU=MEDIC/CN=volmed.org.ru/emailAddress=misk@volmed.org.ru \
Где '''volmed.org.ru''' адрес нашего сервера
+
  -out ./ca/ca.crt</pre>
 +
Где:<br>
 +
rsa - длина ключа (4096), <br>
 +
-days - Период действия сертификата, в нашем случае 10 лет <br>
 +
/CN - адрес нашего сервера, например '''volmed.org.ru''', <br>
 +
/O - Имя организации, например '''MIAC''', <br>
 +
/OU - Имя подразделения, например '''MEDIC''', <br>
 +
Остальное и так понятно.
  
 
Запускаем скрипт '''make_ca.sh'''. Какое-то время он будет возиться с генерацией секретного ключа длиной в 4096 бит, на слабой машине это займет время... можете уменьшить длину ключа до 1024 или 2048 бит, если очень не терпится все поскорее попробовать. В итоге мы получим два файла в каталоге /etc/ssl/ca:<br />  
 
Запускаем скрипт '''make_ca.sh'''. Какое-то время он будет возиться с генерацией секретного ключа длиной в 4096 бит, на слабой машине это займет время... можете уменьшить длину ключа до 1024 или 2048 бит, если очень не терпится все поскорее попробовать. В итоге мы получим два файла в каталоге /etc/ssl/ca:<br />  
 
'''ca.crt''' - это наш самоподписанным доверенный сертификат, и <br />
 
'''ca.crt''' - это наш самоподписанным доверенный сертификат, и <br />
'''ca.key''' - его секретный ключ.<br />
+
'''ca.key''' - его секретный ключ.
 +
 
 
==Создание файла конфигурации==
 
==Создание файла конфигурации==
 
Создаем файл /etc/httpd/conf/vhost.d/server.conf<br \>
 
Создаем файл /etc/httpd/conf/vhost.d/server.conf<br \>
 
<pre>NameVirtualHost *:443
 
<pre>NameVirtualHost *:443
 +
<IfDefine HAVE_SSL>
 +
    <IfModule !mod_ssl.c>
 +
        LoadModule ssl_module  modules/mod_ssl.so
 +
    </IfModule>                                 
 +
</IfDefine>       
 
#Listen 443
 
#Listen 443
 
<VirtualHost *:443>
 
<VirtualHost *:443>
 
ServerName volmed.org.ru
 
ServerName volmed.org.ru
#ServerAlias  volmed.org.ru
+
ServerAlias  volmed.org.ru
 
#Alias "/update" "/var/www/html/new"
 
#Alias "/update" "/var/www/html/new"
 
DocumentRoot "/var/www/html/new"
 
DocumentRoot "/var/www/html/new"
Строка 28: Строка 41:
 
TransferLog /var/log/httpd/update-access.log
 
TransferLog /var/log/httpd/update-access.log
 
CustomLog /var/log/httpd/update-access_log common
 
CustomLog /var/log/httpd/update-access_log common
 +
<IfModule ssl_module>
 +
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
 +
    SSLProtocol all -SSLv2
 
     SSLEngine on
 
     SSLEngine on
 
     SSLCertificateFile /etc/ssl/ca/ca.crt
 
     SSLCertificateFile /etc/ssl/ca/ca.crt
 
     SSLCertificateKeyFile /etc/ssl/ca/ca.key
 
     SSLCertificateKeyFile /etc/ssl/ca/ca.key
 +
</IfModule>
 +
 
</VirtualHost></pre>
 
</VirtualHost></pre>
 
где<br \>
 
где<br \>
Строка 40: Строка 58:
 
  |DocumentRoot||Путь до корня сайта
 
  |DocumentRoot||Путь до корня сайта
 
|}
 
|}
 +
Вообще пример данного файла есть в /etc/httpd/conf/vhosts.d/01_default_ssl_vhost.conf. Только у него надо поменять расширение, что бы apache его не цеплял.
 +
==Получение бесплатного сертификата от https://www.startssl.com/==
 +
Хорошая [http://habrahabr.ru/post/127643/ статья] по этому поводу.<br />
 +
После получения и сохранения файлов ssl.crt и ssl.key и настройки файлов конфигурации (см выше), при запуске apache сервера, он будет просить пароль, который Вы вводили при получении сертификата. Для того, что бы снять пароль, выполняем скрипт.
 +
<pre>
 +
cp ssl.key ssl.old.key
 +
openssl rsa -in ssl.key -out ssl.key
 +
</pre>

Текущая версия на 09:07, 11 мая 2012

Создание саподписанного SSL сертификата

Делаем следующее:

# cd /etc/ssl
# mkdir db
# mkdir ca
# mkdir clients
# touch /etc/ssl/db/index.txt
# echo "01" > /etc/ssl/db/serial

Создаем скрипт для создания нашего самоподписанного доверенного сертификата (CA) /etc/ssl/make_ca.sh :

#!/bin/sh
openssl req -new -newkey rsa:4096 -nodes -keyout ./ca/ca.key -x509 -days 3650 \
   -subj /C=RU/ST=Russia/L=Vologda/O=MIAC/OU=MEDIC/CN=volmed.org.ru/emailAddress=misk@volmed.org.ru \ 
   -out ./ca/ca.crt

Где:
rsa - длина ключа (4096),
-days - Период действия сертификата, в нашем случае 10 лет
/CN - адрес нашего сервера, например volmed.org.ru,
/O - Имя организации, например MIAC,
/OU - Имя подразделения, например MEDIC,
Остальное и так понятно.

Запускаем скрипт make_ca.sh. Какое-то время он будет возиться с генерацией секретного ключа длиной в 4096 бит, на слабой машине это займет время... можете уменьшить длину ключа до 1024 или 2048 бит, если очень не терпится все поскорее попробовать. В итоге мы получим два файла в каталоге /etc/ssl/ca:
ca.crt - это наш самоподписанным доверенный сертификат, и
ca.key - его секретный ключ.

Создание файла конфигурации

Создаем файл /etc/httpd/conf/vhost.d/server.conf

NameVirtualHost *:443
<IfDefine HAVE_SSL>
    <IfModule !mod_ssl.c>
        LoadModule ssl_module   modules/mod_ssl.so
    </IfModule>                                   
</IfDefine>        
#Listen 443
<VirtualHost *:443>
ServerName volmed.org.ru
ServerAlias  volmed.org.ru
#Alias "/update" "/var/www/html/new"
DocumentRoot "/var/www/html/new"
ErrorLog /var/log/httpd/update-error.log
TransferLog /var/log/httpd/update-access.log
CustomLog /var/log/httpd/update-access_log common
<IfModule ssl_module>
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLProtocol all -SSLv2 
    SSLEngine on
    SSLCertificateFile /etc/ssl/ca/ca.crt
    SSLCertificateKeyFile /etc/ssl/ca/ca.key
</IfModule>

</VirtualHost>

где

Название Описание
ServerName имя нашего сервера, то же что и при создании сертификата<br\>
DocumentRoot Путь до корня сайта

Вообще пример данного файла есть в /etc/httpd/conf/vhosts.d/01_default_ssl_vhost.conf. Только у него надо поменять расширение, что бы apache его не цеплял.

Получение бесплатного сертификата от https://www.startssl.com/

Хорошая статья по этому поводу.
После получения и сохранения файлов ssl.crt и ssl.key и настройки файлов конфигурации (см выше), при запуске apache сервера, он будет просить пароль, который Вы вводили при получении сертификата. Для того, что бы снять пароль, выполняем скрипт.

cp ssl.key ssl.old.key
openssl rsa -in ssl.key -out ssl.key