Назад | Перейти на главную страницу

Настройка SSL на apache в Linux ubuntu

Я пытаюсь запустить 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

Но затем вы получите предупреждения, когда посетите сайт в своем браузере, так как это будет самоподписанный сертификат и, следовательно, не заслуживает доверия. Тем не менее, это хороший способ разобраться в процессе и проверить, работает ли сайт. Основные шаги:

  1. Создайте файл закрытого ключа (сделайте это только один раз, при первой настройке сайта)
  2. Создать запрос на подпись сертификата
  3. Платите кучу денег центру сертификации, чтобы проверить и выпустить сертификат (Thwate или аналогичный)
  4. Положите ключ на сервер.

Что касается разрешений, убедитесь, что ключ / 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, иначе сертификат покажет некоторую ошибку (зависит от браузера)