Я пытаюсь запустить SSL на моем веб-сервере Apache.
У меня еще нет DNS для настройки домена, это проблема?
Как настроить SSL на моем веб-сервере?
Когда я запускаю apache, он не работает.
root@vannevar:/etc/apache2/ssl# service apache2 start
* Starting web server apache2 Action 'start' failed.
The Apache error log may have more information.
В журнале указано, что сертификат не может быть прочитан.
[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Thu Jun 28 15:01:02 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
Содержание /etc/apache2/httpd.conf
ServerName [SERVERIP]
Содержание /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 [SERVERIP]:443
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.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Содержание /etc/apache2/sites-available/www.example.com
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/sites/example.com/public/
ErrorLog /srv/sites/example.com/logs/error.log
CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>
<VirtualHost [SERVERIP]:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
SSLCertificateKeyFile /etc/apache2/ssl/www.example.com.key
SSLCACertificateFile /etc/apache2/ssl/comodo.crt
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/sites/example.com/public/
ErrorLog /srv/sites/example.com/logs/error.log
CustomLog /srv/sites/example.com/logs/access.log combined
</VirtualHost>
ОБНОВИТЬ:
В dreamhost (от которого я пытаюсь выйти) у меня уже есть домен с ssl / https, я вижу три ключа в сертификате администратора dreamhost, закрытом ключе и промежуточном сертификате. Могу я что-нибудь с этим сделать? Я вижу, что dreamhost использует comodo, и на моем веб-сайте написано, что это PositiveSSL, поэтому ... на веб-сайте comodo есть корневой сертификат и промежуточный сертификат. Какое отношение имеют эти пять сертификатов к двум, созданным openssl req -new -days 365 -nodes -keyout www.mydomain.com.key -out www.mydomain.com.csr
команда? Эти двое запрашивают настоящий сертификат?
Я понял, что ошибка apache относится к файлу /etc/apache2/sites-available/www.example/com
где я испортил тип файла для SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
это должно быть .crt
согласно linode docs
Обновление 2
Итак, я вошел в Dreamhost, скопировал ключи к следующим файлам и сопоставил следующие
certificate => dh.crt
private key => dh.key
intermediate certificate => dh.cer
изменил соединение в /sites-available/example.com
и это сработало (apache работал). Означает ли это, что ssl будет работать, когда я подключу свой домен?
Я не могу голосовать здесь или комментировать, но Адриан Перес прав, вы используете не сертификат, а запрос на подпись сертификата в этой строке:
SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
CSR необходимо отправить в центр сертификации, чтобы подтвердить вашу личность и сгенерировать сертификат. Вы можете создать его самостоятельно, используя команду:
openssl x509 -req -days 365 -in www.example.com.csr -signkey www.example.com.key -out www.example.com.crt
И меняем:
SSLCertificateFile /etc/apache2/ssl/www.example.com.csr
Кому:
SSLCertificateFile /etc/apache2/ssl/www.example.com.crt
Но затем вы получите предупреждения, когда посетите сайт в своем браузере, так как это будет самоподписанный сертификат и, следовательно, не заслуживает доверия. Тем не менее, это хороший способ разобраться в процессе и проверить, работает ли сайт. Основные шаги:
Что касается разрешений, убедитесь, что ключ / crt доступен для чтения / записи только root (chmod 600), иначе Apache будет стонать.
Надеюсь это поможет
Вы не можете настроить SSL, пока не получите действующий сертификат. У вас есть запрос на сертификат, который следует отправить в центр сертификации, чтобы они выпустили сертификат. Кроме того, хотя вы можете заставить сервер работать без работы DNS, клиенты не смогут получить доступ к серверу, кроме как по IP, что приведет к предупреждению, поскольку сертификат не может проверить IP.
Обновить: Похоже, вы все сделали прямо сейчас. Если есть другие проблемы, вы можете решить их после настройки DNS.
Возможно, я ошибаюсь, но проверьте, есть ли сертификат в файле www.example.com.csr. Обычно файлы с расширением csr содержат запрос на подписку в ЦС.
Кроме того, вы можете проверить разрешения и пути, как сказал другой пользователь, но я думаю, что проблема в содержимом файла.
Вы можете установить флажок, чтобы удалить файл и создать новый пустой файл, а также вставить данные сертификата в файл.
С уважением!
Вы можете скачать программу на Java под названием Проводник хранилища ключей , чтобы открыть и просмотреть сертификат, чтобы убедиться, что он действителен. Что касается Apache, то сертификат должен быть в определенном формате. Этот сайт может помочь объяснить нужный вам формат, который выглядит как PEM.
Похоже, ваш файл сертификата не читается (или отсутствует)
[Thu Jun 28 15:01:02 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/www.example.com.csr
Вы проверяли разрешения / пути?
Кроме того, необходимо настроить DNS, иначе сертификат покажет некоторую ошибку (зависит от браузера)