Поиск по сайту:

Начало работы с SSL-сертификатами Lets Encrypt в Ubuntu


На этой странице

  1. Создание веб-сайта
  2. Установите Lets Encrypt и создайте свой первый SSL-сертификат.

Это руководство проведет вас через самую первую настройку веб-сайта SSL с сертификацией Lets Encrypt. Lets Encrypt — это новый центр SSL, предоставляющий бесплатные сертификаты SSL. Мы собираемся использовать два существующих учебника («Идеальный сервер — Ubuntu 15.10 (Wily Werewolf) с Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot и ISPConfig 3»).

Описанная здесь установка совместима с любым сервером Ubuntu LAMP, поэтому вы также можете использовать ее в качестве базовой установки.

В этом руководстве показано, как настроить Lets Encrypt на серверах без ISPConfig 3, так как в следующем выпуске ISPConfig 3 (версия 3.1) скоро будет прямая реализация службы Lets Encrypt. Поэтому, если вы планируете использовать ISPConfig, дождитесь выпуска 3.1, а также нового руководства.

Создание веб-сайта

Первый й шаг — создать конфигурацию и каталог веб-сайта и включить для него SSL (Apache mod_ssl). Вам решать, используете ли вы конфигурацию по умолчанию для одного веб-сайта на сервере или планируете использовать несколько виртуальных хостов для размещения более одного домена. Для более надежного и масштабируемого использования я создам конфигурацию виртуального хоста для своего лабораторного домена isp1.cloudapp.net из Azure.

Все виртуальные хосты по умолчанию хранятся в каталоге /etc/apache2/sites-available в Ubuntu и Debian. Выполните следующую команду, чтобы получить список существующих файлов конфигурации виртуального хоста.

ls -l /etc/apache2/sites-available/

Мой вывод выглядит так:

:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

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

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

В этот файл вставьте следующее содержимое:

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

Замените доменное имя своим доменом везде, где оно встречается, и сохраните файл. Чтобы активировать конфигурацию, запустите:

a2ensite isp1.cloudapp.net.conf

Теперь создайте папки для веб-сайта:

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

Перезапустите apache, чтобы применить новую конфигурацию:

sudo service apache2 restart

Теперь нам нужно сгенерировать файлы сертификатов.

Установите Lets Encrypt и создайте свой первый SSL-сертификат

Я предпочитаю использовать логин root для администрирования вместо запуска sudo перед каждой командой, поэтому давайте su для пользователя root:

sudo su

Перейдите в домашний каталог ваших корней:

cd ~root

Установите git для получения файлов репозитория Lets Encrypt git:

apt-get install git

Теперь клонируйте git-репозиторий Lets Encrypt:

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

Перейдите в новую папку letsencrypt:

cd letsencrypt

И запросите свой SSL-сертификат:

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

Если вы запрашиваете сертификат для главного домена (домен 1st уровня, также известный как cloudapp.net), дважды используйте параметр -d. С префиксом www и без него:

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

Если вы этого не сделаете, сертификат не будет действителен для посетителей, открывающих ваш сайт с префиксом www.

Вы также можете добавить другие поддомены к одному сертификату. Например, если ваш субдомен admin.cloudapp.net совпадает с тем же сайтом (той же папкой на сервере), его также следует добавить в этот сертификат. К сожалению, вы не можете использовать подстановочный знак, например (*.cloudapp.net), с lets encrypt.

Lets Encrypt автоматически обновит все зависимости и проведет вас через настройку. Все, что вам нужно сделать, это дождаться окна с запросом вашего адреса электронной почты. Этот адрес используется только для восстановления потерянных данных.

Ваши новые ключи теперь хранятся в /etc/letsencrypt/ по умолчанию. Мы собираемся связать их с каталогом нашего веб-сайта, чтобы мы могли управлять ключами позже.

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

Теперь вы должны иметь доступ к своему сайту с помощью SSL. Lets Encrypt автоматически сообщит вам об истечении срока действия сертификатов, отправив вам электронное письмо на адрес, который вы указали при установке Lets Encrypt.