Я пытаюсь настроить SSL на своем веб-сервере apache2, но кажется, что он вообще не работает.
Я следовал руководству по созданию файлов сертификатов с openssl и /etc/apache2/sites-available/default-ssl.conf
правильно настроил их.
Каждый раз, когда я пытаюсь открыть свой сайт с помощью https, мой браузер отказывается подключаться из-за проблем с безопасностью. Там написано, что я неправильно настроил свой сайт.
По моему /var/log/apache2/error.log
я получаю предупреждения, в которых говорится, что мой сертификат сервера не содержит идентификатор, который соответствует имени сервера.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'
У вас есть идеи, как это решить? Спасибо в отношении!
Ответы:
Хорошо, я заметил, что этот пост просматривается довольно часто в последнее время, и поэтому многие люди сталкиваются с той же проблемой, что и я. Если это так, то это может помочь вам.
Я следовал простому пошаговому руководству, чтобы создать SSL-сертификацию для моего веб-сервера. Как и во многих других уроках, результатом урока, которым я следовал, был самозаверяющий сертификат с использованием OpenSSL. Да, самоподписанный , это была проблема. Браузер не может доверять серверу из-за его сертификата, который сам подписан. Ну, я бы тоже не стал ...
Сертификат должен быть подписан внешним заслуживающим доверия центром сертификации (ЦС). Поэтому я наткнулся на Let's Encrypt, который выполняет всю работу за вас, и его еще проще настроить, а самое лучшее: он абсолютно бесплатный.
Установка
1) Удалите ваши старые файлы сертификата ssl, которые вы создали с помощью OpenSSL
2) Откройте backports для получения клиента certbot в Debian. Вы должны знать, что это откроет дыру для незаконченного программного обеспечения! Устанавливайте пакеты только тогда, когда вы знаете, что делаете.
3) Обновите систему Linux
4) Установите certbot
5) Настройте apache ServerName и ServerAlias
6) Редактировать конфигурационный файл apache
7) Проверьте правильность синтаксиса.
8) Если файл конфигурации выглядит нормально, перезапустите сервер Apache
9) Установите сертификат с помощью certbot и следуйте инструкциям на экране.
обновление
Все сертификаты Let's Encrypt действительны в течение 3 месяцев. Чтобы обновить, вы можете запустить вручную
Или автоматизировать этот сервис как работу cron
и введите следующую строку, чтобы вызывать обновление каждый понедельник в 2:30.
Вы можете следовать более подробному руководству здесь: https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8
источник
Если вы не видите никаких других ошибок SSL, и если вы попытались установить «Отладка LogLevel» в файле httpd.conf, это сообщение об ошибке также может означать, что в файле httpd.conf отсутствует «Listen 443».
источник
Это не ошибки - это предупреждения. Вполне возможно запустить mod_ssl с сертификатом, который не соответствует определенным именам серверов, если у вас определен хост ssl по умолчанию, а общее имя в сертификате совпадает с именем хоста, используемым клиентами для подключения.
Последнее не похоже на правду в вашем случае. Как говорит Джейкоб, вам нужно указать правильное имя хоста в качестве общего имени (или псевдонима) при создании CSR .
Чтобы увидеть, какие имена в настоящее время указаны в сертификате:
Если на машине установлено несколько сертификатов, которые обслуживаются на одном IP-адресе, то:
(где значения $ {...} являются заполнителями, вы должны заменить их соответствующими значениями).
источник
openssl s_client
показывает субъект и эмитента для листового сертификата, который является единственным вам нужно здесь, без-showcerts
, но для реальных сертификатов CA, начиная примерно с 2010 года (и сертификатов DIY от компетентных людей), на что вам нужно обратить внимание, это не предмет, а расширение SubjectAltName (SAN), а для этого вам нужноopenssl s_client -connect h:p [-servername h] | openssl x509 -noout -text
Я столкнулся с этой проблемой недавно, когда истек срок действия моего самоподписанного сертификата. Я гуглил и просто скопировал команду для создания нового сертификата с одного веб-сайта.
В моем конфигурационном файле apache: /etc/apache2/sites-available/default-ssl.conf. Файл сертификата и файл ключа относятся к следующему имени файла.
Следовательно, ошибка, замеченная здесь в моем случае, была легче исправить, просто предоставив правильное местоположение файла ключа сертификата при создании сертификата ssl.
Итак, вот команда, которую я должен был использовать и набрать правильно.
источник
В моем случае я решил эту проблему с помощью замены в моем конфигурационном файле apache ssl для каждого соответствующего домена:
по :
Потому что мой сертификат для "www.mydomain.com", а не для "mydomain.com"
полный файл apache:
источник
Нам пришлось добавить ServerName и ServerAlias в файл default-ssl, а не только в файл conf для конкретного домена.
Это избавило нас от досадной ошибки.
источник