Главная страница \ Статьи \ Web-разработка \ Получение бесплатного SSL сертификата Lets Encrypt

Получение бесплатного SSL сертификата Lets Encrypt

Определённое время назад появилась инициатива по переходу всех веб-коммуникаций на использование протокола HTTPS. В связи с этим при поддержке многих ведущих вендоров была запущена служба по выдаче бесплатных SSL-сертификатов Let's Encrypt.

Вслед за этим появилось желание протестировать данную услугу. Способов её получения - масса.

Я решил попробовать стандартный и рекомендуемый всем желающим, а именно - применить certbot.

На тестовом стенде всё получилось просто и элементарно:

pkg install py27-certbot

и я решил проделать то же самое на боевом сервере под управлением FreeBSD 9 версии.

Само собой на боевом сервере уже был установлен питон и после "успешного" выполнения вышеуказанной команды - попытка получить сертификат

certbot certonly --standalone -d example.com -d www.example.com

сообщала, что у меня в системе установлена старая (0.9.8) версия openssl. Обновление python  с версии 2.7.3 до версии 2.7.12 к успеху не привело.

Пришлось всё удалить

pkg delete python27

установить свежую версию openssl в систему

pkg install openssl

и дальше собрать certbot из портов

cd /usr/ports/security/py-certbot
make install clean

Но certbot (по-русски сукеище, очень соответствует) упорно не хотел собираться, периодически выпадая с ошибкой сборки. Пришлось потратить какое-то время на ручную сборку и установку питона и всех зависимостей, которые выпадали с ошибкой not found. В итоге пришлось сделать всё указанное:

cd /usr/ports/lang/python27
make install clean
cd /usr/ports/devel/py-cffi
make clean
make install clean
cd /usr/ports/security/py-cryptography/
make clean
make install clean
cd /usr/ports/devel/py-pyasn1
make clean
make install clean
cd /usr/ports/dns/py-idna
make clean
make install clean
cd /usr/ports/net/py-ipaddress
make clean
make install clean
cd /usr/ports/devel/py-enum34
make clean
make install clean
cd /usr/ports/net/py-ndg_httpsclient
make clean
make install clean
cd /usr/ports/www/py-requests
make clean
make install clean
cd /usr/ports/www/py-werkzeug
make clean
make install clean
cd /usr/ports/devel/py-zope.event
make clean
make install clean
cd /usr/ports/devel/py-pbr       
make clean
make install clean
cd /usr/ports/devel/py-funcsigs
make clean
make install clean
cd /usr/ports/security/py-certbot
make install clean

После этого наконец-то был получен рабочий certbot. Но после запуска он вначале выругался по-поводу работающего веб-сервера, пришлось остановить Apache, а потом на недоступность по HTTPS: потребовалось отркыть 443 порт для доступа снаружи (хотел сделать это уже после настройки, но пришлось делать раньше).

Ключи были сгенерированы по пути: /usr/local/etc/letsencrypt/live/example.com/

После этого осталось только прописать соответствующий VirtualHost:

Listen 443
<virtualhost>
        DocumentRoot "/home/site/public_html"
        ServerName example.com
        ServerAlias www.example.com
        ErrorLog "/home/site/logs/error.log"
        CustomLog "/home/site/logs/access.log" combined
        php_admin_value open_basedir    "/home/site:."
        php_admin_value sendmail_path   "/usr/sbin/sendmail -t -i -f noreply@example.com"
        php_admin_value upload_tmp_dir  "/home/site/upload"

        SSLEngine on
        SSLCertificateFile      /usr/local/etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateKeyFile   /usr/local/etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateChainFile /usr/local/etc/letsencrypt/live/example.com/chain.pem

</virtualhost>

Вопросы? Предложения?

Powered by Elise