Я пытаюсь настроить поддержку ssl для Apache 2 в Debian. Версии бывают:
Debian GNU/Linux 6.0
apache2 2.2.16-6+squeeze1
Я следил за множеством инструкций в течение нескольких дней, но не мог заставить их работать. Вот мои шаги и файлы конфигурации (ServerName и DocumentRoot изменены для конфиденциальности, на всякий случай скажите мне):
# mkdir /etc/apache2/ssl
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
на данный момент я сомневаюсь в разрешениях на apache.pem, на этом этапе они
-rw-r--r-- 1 root root
Может, он должен принадлежать к www-данным? Затем я включаю ssl-mod с помощью
# a2enmod ssl
# /etc/init.d/apache2 restart
Я модифицирую / etc / apache2 / sites-available / default-ssl таким образом (я поставил порт 8080, потому что мне нужен порт 443 для другой цели):
<VirtualHost *:8080>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.pem
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /home/user1/public_html/
ServerName first.server.org
# Other directives here
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /home/user2/public_html/
ServerName second.server.org
# Other directives here
</VirtualHost>
Я должен отметить, что такая же конфигурация работает с http (это копия / etc / apache2 / sites-available / default с некоторыми отличиями -> поддержка порта и ssl). Мой /etc/apache2/ports.conf выглядит следующим образом:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
#NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
#NameVirtualHost *:8080
Listen 8080
</IfModule>
<IfModule mod_gnutls.c>
Listen 8080
</IfModule>
Любое предложение?
В соответствии с вашей конфигурацией у вас есть несколько виртуальных хостов на одном порту, на котором вы хотите использовать ssl, и, по-видимому, только один из них настроен для ssl.
Удалите все другие определения виртуальных хостов или измените их порт или IP-адрес и проверьте его снова.
Вероятно, здесь произошла неправильная конфигурация:
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.pem
Ваш файл сертификата и ключ должны быть отдельными файлами.
Я не знаю, как это сделать по-вашему. Но чтобы ваш материал работал, вам также может потребоваться мой гид для использования Java Keytool для создания хранилища ключей и последующего экспорта ключа из хранилища ключей для использования с Apache. Я знаю, что этот метод работает.
Следуя моему руководству, вы получите:
SSLCertificateFile /etc/apache2/ssl/exported-pem.crt
SSLCertificateKeyFile /etc/apache2/ssl/exported-pem.key
Я не уверен, но я прочитал ваши шаги и заметил следующее:
- вы пропустили шаг CSR, а затем также пропустили подписание запроса сертификата
- вы не удалили пароль из закрытого ключа (но это необходимо только на платформе Windows; в этом случае Apache должен знать пароль для чтения ключа, и я не вижу, где вы это сделали)
- Что касается конфигурации ssl, по моему опыту, файл конфигурации ssl по умолчанию должен работать, пока вы включите его директиву в своем файле http.conf.