Letsencrypt auto: получение сертификата по шагам / Хабр
получение сертификата по шагам / Хабр
В данной статье будет описан реальный способ получения сертификата от
Let’s Encrypt
в ручном режиме для его дальнейшей установки на веб-сервер Windows (IIS/Microsoft Azure) или Linux (полностью ручной режим). Из-за отсутствия официального клиента под Windows для генерации сертификата будет использоваться дистрибутив
Linux
.
В первые дни открытия заявок на бета-тестирование и было принято решение записаться и вот недавно пришло письмо, которое сообщает о том, что теперь программа ACME сгенерирует валидный сертификат для нашего домена.
Далее мы решили опубликовать статью с пошаговой инструкцией процесса, чтобы к моменту релиза вы уже смогли оперативно создать и начать пользоваться своим сертификатом.
Как это работает
Полное описание процесса доступно по
этой ссылке
.
Важно лишь знать, что для подтверждения владения доменом и успешной генерации сертификата нужно будет иметь доступ к записям DNS или к серверу куда ссылается A-запись, что вполне логично.
Смысл программного набора Automated Certificate Management Environment (ACME) (написан на Python) в том, чтобы автоматизировать генерацию и установку сертификата в Linux-окружении.
Существует неофициальный Windows-клиент с открытыми исходными кодами, который может генерировать и устанавливать сертификаты на Windows IIS и Amazon Web Services, но у нас была задача получить ключи и установить их вручную. Предлагаю любому желающему написать статью по работе с ним.
Процесс по шагам
Внимание: эта инструкция учит создавать сертификат в ручном режиме, существуют и более простые способы автоматической генерации и обновления сертификатов. Надеюсь, что скоро их опишут на этом ресурсе.
[11/01/17] Новый клиент CertBot
Небольшое обновление статьи в 2017 году.
Теперь можно установить CertBot и получить сертификат в ручном режиме.
Краткая инструкция:
1. Скачиванием дистрибутив
wget https://dl.eff.org/certbot-auto
2. Установка прав на файл
chmod a+x certbot-auto
3. Запуск для получения сертификата в ручном режиме
./certbot-auto certonly --authenticator manual
4. Следуйте указаниям программы (подробнее смотрите в полной инструкции ниже с шага № 4).
Подробная инструкция (старый клиент — всё ещё работает)
Использовалась официальная инструкция.
Пользователи Linux могут использовать текст ниже как пример генерации сертификата в ручном режиме.
1. Запустите ваш любимый дистрибутив Linux (мы использовали Debian 8).
либо 2. Установите Git и выполните команды ниже:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
или 2. Скачайте и распакуйте в папку данный архив и перейдите в эту папку
3. Запустите установку и генерацию с помощью
./letsencrypt-auto --agree-dev-preview --server \https://acme-v01.api.letsencrypt.org/directory -a manual auth
Вам будет предложено ввести электронную почту для восстановления в будущем.
Ключ -a manual позволит сгенерировать ключи в ручном режиме без их автоматической установки на веб-сервер.
4. Далее введите домены для которых вы хотите создать сертификаты
5. Подтвердите сохранение вашего адреса в логах Let’s Encrypt
6. Подтвердите владение доменом
В сентябре 2016 года произошли небольшие изменения в порядке получения сертификата. Спасибо toxi_roman за обновление.
Старый способ подтверждения с text/plain (не актуально по состоянию на октябрь 2016 г.)
Это один из ответственных моментов в режиме ручной регистрации.
Обратите внимание:
нас просят создать ответ на запрос, который возвращает
Content-Type text/plain
.
Такой ответ не пройдёт и подтверждение выдаст ошибку:
Нужно, чтобы было так:
Если у вас сервер на Windows (с поддержкой Razor Views, аналогично и с MVC), то самый простой способ создания правильного ответа:
а) создать папку .well-known и в ней папку acme-challenge
б) поместить туда файл [запрос].cshtml
в) в содержание этого файла добавить:@{Response.ContentType = "text/plain";Response.Charset = "";}здесь проверочный код
7. После успешной проверки, будут созданы следующие сертификаты в папке /etc/letsencrypt/live/[имя домена]:
privkey.pem — приватный ключ для сертификата
Используется Apache для SSLCertificateKeyFile и nginx для ssl_certificate_key.
cert.pem (сертификат сервера)
Используется Apache для SSLCertificateFile.
chain.pem (сертификат цепочки)
Он же используется Apache для SSLCertificateChainFile.
fullchain.pem (соединение chain.pem и cert.pem)
Он же используется nginx для ssl_certificate.
7. Теперь пришло время сконвертировать его в родной для Windows .pfx формат.
Перейдите в папку /etc/letsencrypt/live/[имя домена] (откройте терминал в режиме администратора с помощью команды su):
cd /etc/letsencrypt/live/[имя домена]
Запустите OpenSSL с помощью команды:
openssl
и начните конвертацию с помощью команды:
pkcs12 -inkey privkey.pem -in fullchain.pem -export -out mydomain.pfx
Вас попросят ввести пароль и подтвердить его.
7.2 Выходим из OpenSSL с помощью команды quit
7.3 Копируем итоговый файл в директорию нашего пользователя cp --no-preserve=all mydomain.pfx /home/(имя пользователя)/Documents
8. Мы получили сертификат mydomain.pfx, который теперь можем использовать в Windows-окружении.
Для обновления сертификата в ручном режиме:./letsencrypt-auto certonly --renew-by-default -a manual
Важно знать, что сертификаты Let’s Encrypt валидны 90 дней. Рекомендуется обновлять их каждые 60 дней. На электронную почту, которую вы указали для генерации, будут приходить уведомления об истечении сертификата.
Буду рад услышать ваши замечания или пожелания к статье.
Настройка Nginx с Let’s Encrypt на CentOS 7 / Хабр
Наверно, многие уже в курсе, что компания Let’s Encrypt раздает бесплатные SSL-сертификаты на https://letsencrypt.org. Как же его получить и настроить на своем сервере под управлением CentOS 7 и Nginx?
Введение
Давайте его получим. Let’s Encrypt это новый центр сертификации (CA), который позволяет простым способом бесплатно получить и установить TLS / SSl сертификат, позволяя нам шифровать HTTPS трафик на ваших веб-серверах. Этот процесс уже автоматизирован программой letsencrypt, но, к сожалению, только под управлению веб-серверами Apache.
В этом уроке я покажу вам, как получить SSL сертификат под Nginx, CentOS 7. Также настроим автоматическое продление сертификата, так как он дается на 90 дней.
Шаг 1 — Установка клиента Letsencrypt
Итак, что мы имеем:
— Веб сервер под управлением CentOS, Nginx;
— Установленные программы Git, Bc.
На всякий случай:
sudo yum -y install git bc
После того, как git и bc установлены, переходим к клонированию проекта letsencrypt из GitHub.
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Теперь у вас должна быть копия проекта в /opt/letsencrypt.
Шаг 2 — Получение сертификата
Letsencrypt предоставляет множество способов получения SSL-сертификатов с помощью различных плагинов. В отличии от плагина Apache, который устанавливается автоматически, нам придется ставить сертификат вручную.
Установка сертификата SSL
Переходим к проекту Letsencrypt, куда мы клонировали файлы. И запускаем генерацию сертификатов командой letsencrypt-auto certonly, используя плагин webroot.
-d example.com -d www.example.com — наши домены
—webroot-path=/usr/share/nginx/html директория, где лежит наш проект
cd /opt/letsencrypt
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com
Примечание: запускаем приложение letsencrypt-auto без sudo
После того, как letsencrypt инициализирует, нам необходимо будет вести дополнительные данные. Предложенные вопросы могут варьироваться в зависимости от того, как давно вы использовали letsencrypt раньше, но мы запускаем первый раз.
В командной строке введите адрес электронной почты, который будет использоваться для информативных сообщений, а также будет возможность восстановить ключи:
Соглашайтесь с условиями пользования Letsencrypt.
Если все прошло успешно, тогда в консоли вы должны увидеть примерно это:
Output:
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to [email protected]
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your
cert will expire on 2016-03-15. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Мы видим, куда сохранились созданные сертификаты /etc/letsencrypt/live/example.com/ и дату истечения действия сертификата 2016-03-15.
Возможные ошибки:
Если вы получили ошибки, типа: Failed to connect to host for DVSNI challenge, настройте firewall вашего сервера, что бы TCP трафик проходил по портам 80 и 443.
После получения сертификата, вы будете иметь следующие PEM-закодированных файлы:
cert.pem: сертификат для вашего домена
chain.pem: Let’s Encrypt цепь сертификатов
fullchain.pem: cert.pem и chain.pem
privkey.pem: Сертификат с приватным ключом
В целях дальнейшего повышения уровня безопасности, мы сформируем ключ по алгоритму шифрования Диффи-Хеллмана. Чтобы создать 2048-битный ключ, используйте следующую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Это нужно, чтобы у нас заработал Forward Secrecy. Прямая секретность означает, что если третья сторона узнает какой-либо сеансовый ключ, то она сможет получить лишь доступ к данным, защищенным лишь этим ключом. Для сохранения совершенной прямой секретности ключ, используемый для шифрования передаваемых данных, не должен использоваться для получения каких-либо дополнительных ключей.
Процесс может занять несколько минут, но когда ключ создастся, он будет помещен в каталог в /etc/ssl/certs/dhparam.pem.
Шаг 3 — Настройка TLS/SSl на веб-сервере Nginx
Настройка конфигурации Nginx, используя SSl — сертификаты.
server {
# перенаправление с 80 порта, а также с www
server_name example.com www.example.com
listen 80;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
# Указываем пути к сертификатам
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers '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: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:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
# позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
location ~ /.well-known {
allow all;
}
# The rest of your server block
root /usr/share/nginx/html;
index index.html index.htm;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
Перезагружаем Nginx
sudo systemctl reload nginx
Шаг 4 — Настройка автопродление
Сертификаты действительный 90 дней, но рекомендуется продлевать сертификаты каждые 60 дней. Мы это автоматизируем с помощью cron.
Чтобы запустить процесс обновления для всех установленных доменов, выполните следующую команду:
/opt/letsencrypt/letsencrypt-auto renew
Так как мы недавно установили сертификат, то команда будет проверять только дату истечения срока действия и распечатает сообщение, информирующее о том, что сертификат не нуждается в продлении. Вы увидите примерно следующие в консоли:
Checking for new version...
Requesting root privileges to run letsencrypt...
/root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
Обратите внимание, что если вы создали сертификат в комплекте с несколькими доменами, тогда только базовое имя домена будет отображено в консоли, но вы не пугайтесь, продлены будут все домены, включенные в этот сертификат.
Давайте отредактируем crontab, что бы наши сертификаты обновлялись автоматически. Проверку на обновления мы будем делать каждую неделю. Для редактирования crontab от root пользователя выполните команду:
sudo crontab -e
Добавим следующие строки:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx
Этак команда создаст cron, который каждый понедельник будет выполнять автоматическое продление letsencrypt сертификатов в 2:30 и перезагружать Nginx в 2:35. Вся информация об обновлении будет логироваться в /var/log/le-renew.log.
Шаг 5 — Обновление Let’s Encrypt (не обязательно)
Всякий раз, когда новые обновления доступны для клиента Let’s Encrypt, вы можете обновить локальную копию, запустив git pull из каталога /opt/letsencrypt:
cd /opt/letsencrypt
sudo git pull
Это позволит загрузить все последние изменения из хранилище для обновления клиента Let’s Encrypt.
Финиш! Ваш веб-сервер теперь использует шифрование TLS / SSL, и все это бесплатно. Давайте шифровать HTTPS контент, стоять на страже неприкосновенности частной жизни. Также это повысит видимость сайта в выдаче Google.
Источники
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-centos-7
https://habrahabr.ru/post/252821/
Настройка получения и автопродления SSL сертификата Let’s Encrypt
Уже всем известно, что Let’s Encrypt позволяет получить бесплатный SSL-сертификат на https://letsencrypt.org.
Здесь я опишу, как его получить и настроить на сервере под управлением CentOS 7 и Nginx.
Необходимое ПО:
Клонируем:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
| sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt |
Генерация сертификатов:
cd /opt/letsencrypt
./letsencrypt-auto certonly -a webroot —webroot-path=/path_to_root_web -d example.com -d www.example.com
| cd /opt/letsencrypt ./letsencrypt-auto certonly -a webroot —webroot-path=/path_to_root_web -d example.com -d www.example.com |
В результате успешного выполнения мы видим, куда сохранились созданные сертификаты /etc/letsencrypt/live/example.com/ и дату истечения действия сертификата.
В целях повышения уровня безопасности, мы сгенерируем ключ по алгоритму шифрования Диффи-Хеллмана. Это нужно, чтобы работал Forward Secrecy. Для создания 2048-битного ключа:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
| sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 |
Настройка конфигурации Nginx:
server {
# перенаправление с 80 порта, а также с www
server_name example.com www.example.com
listen 80;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
# Указываем пути к сертификатам
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ‘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: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:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
# позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
location ~ /.well-known {
allow all;
}
# The rest of your server block
root /usr/share/nginx/html;
index index.html index.htm;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| server { # перенаправление с 80 порта, а также с www server_name example.com www.example.com listen 80; return 301 https://www.example.com$request_uri; }
server { listen 443 ssl;
server_name example.com www.example.com;
# Указываем пути к сертификатам ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers ‘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: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:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m;
# позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age=15768000;
location ~ /.well-known { allow all; }
# The rest of your server block root /usr/share/nginx/html; index index.html index.htm;
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } } |
sudo systemctl reload nginx
| sudo systemctl reload nginx |
Настройка автопродления:
Сертификаты действительный 90 дней, но рекомендуется продлевать сертификаты каждые 60 дней. Мы это автоматизируем с помощью cron.
Чтобы запустить процесс обновления для всех установленных доменов, выполните следующую команду:
/opt/letsencrypt/letsencrypt-auto renew
| /opt/letsencrypt/letsencrypt-auto renew |
sudo crontab -e
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx
| sudo crontab -e
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log 35 2 * * 1 /usr/bin/systemctl reload nginx |
P.S.
Если у нас проксирующий Nginx, а сам сайт на другом сервере…
Достаточно на сервере с проксирующим Nginx создать директорию
mkdir -p /var/www/html/my_site
| mkdir -p /var/www/html/my_site |
и в конфиге сделать секцию
location ~ /\.well-known {
allow all;
root /var/www/html/my_site;
}
| location ~ /\.well-known { allow all; root /var/www/html/my_site; } |
SSL-сертификат Let’s Encrypt на Nginx |
Проект Let’sEncrypt вошёл в стадию публичной беты 3-го декабря 2015 года. Теперь его можно попробовать.
В чём суть проекта: он позволяет выпускать и продлевать SSL сертификаты бесплатно и автоматически.
На счёт «бесплатно» — здесь всё ясно. Можно бесплатно получить сертификат уровня Domain Validation.
А вот на счёт «автоматически» — чуть посложнее. Разберём процесс получения и установки сертификата.
UPD: Увеличена степень «автоматизма» получения сертификата, убраны однообразные ручные операции.
Испокон веков получение SSL-сертификата было, в некотором роде, геморроем, который заключался в выполнении следующих пунктов:
- Создание CSR-запроса
- Отправка CSR-запроса в форму сертифицирующего центра
- Подтверждение владения доменом при помощи щелчка по ссылке, присланной на почту [email protected]
- Получение сертификатов
- Подготовка сертификатов для использования в конкретном web-сервере, в частности, для Nginx, цепочку сертификатов нужно «слеплять» в один.
- Через год — проделать всё заново.
Так вот, для того, чтобы вам не нужно было проходить через всё это, некоммерческая организация Let’s Encrypt разработала специальный протокол ACME а также клиент, работающий с ним. Также, эта организация создала свой доверенный центр сертификации, который признаётся корневыми центрами сертификации, и уже есть во всех последних версиях браузеров.
Таким образом, в идеальном случае, вам достаточно будет установить клиент, и выполнить специальную команду, которая запросит сертификат, сама пройдёт проверку владения вами доменом, после чего получит сертификат и положит его в соответствующее место. Но это в теории. На практике же, инструмент может потребовать некоторых усилий.
В частности, если вы используете веб-сервер Nginx, а также, если веб-сервер у вас уже настроен, и работает, а вам нужно получить для него сертификат.
Алгоритм действий для получения сертификата
Условия:
- Сайт с поддоменами работает на Nginx
- Сервер работает на Debian Jessie 8.0
Я буду создавать сертификат для своего домена mihanentalpo.me, а также для поддоменов www и redmine. Поддомен www и вам пригодится, а другие поддомены выбирайте по своему усмотрению.
Настройка веб-сервера для использования Let’s Encrypt
Сервер Let’s Encrypt, перед выдачей сертификата убеждается в том, что домен принадлежит именно вам, для этого он обращается по определённому адресу вашего домена, и ожидает получить оттуда определённые данные. Для того, чтобы было удобно проходить эту проверку, будем размещать файлы проверок в конкретной папке.
1. Создадим папку /var/www/letsencrypt, в ней папку для файлов-испытаний letsencrypt и дадим серверу права на них:
# mkdir /var/www/letsencrypt # mkdir -p /var/www/letsencrypt/.well-known/acme-challenge # chown -hR www-data:www-data /var/www/letsencrypt |
# mkdir /var/www/letsencrypt
# mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
# chown -hR www-data:www-data /var/www/letsencrypt
Можно использовать и другую папку, но всюду где она будет упомянута далее, вам нужно будет также её подменять на свою придуманную.
В эту папку (.well-known/acme-challenge) мы будем класть файлик с «испытанием» для подтверждения владения сервером.
2. Изменим конфигурацию nginx для домена и поддоменов.
В секции server, описывающей ваш домен (порт 80, протокол http), добавим следующий блок:
# Папка с челенджами для ACME location ~ /.well-known { location ~ /.well-known/acme-challenge/(.*) { default_type "text/plain"; root /var/www/letsencrypt; } }
ВАЖНО! Если в вашем файле конфигурации сервера есть блок для запрета открытия файлов, начинающихся с точки, то нужно вставлять блок с .well-known ДО НЕГО,
иначе при попытке зайти в браузере по адресу myserver.com/.well-known/acme-challenge, вы будете получать 403 ошибку (так как запрещено открытие файлов, начинающихся с точки)
Блок этот может выглядеть вот так:
location ~ /\. { deny all; access_log off; log_not_found off; }
Данную настройку нужно повторить для всех ваших поддоменов!
3. Создадим файл для тестирования доступа к папке с challenge’ами:
# echo "Hello world" > /var/www/letsencrypt/.well-known/acme-challenge/index.html # chown www-data:www-data /var/www/letsencrypt/.well-known/acme-challenge/index.html |
# echo «Hello world» > /var/www/letsencrypt/.well-known/acme-challenge/index.html
# chown www-data:www-data /var/www/letsencrypt/.well-known/acme-challenge/index.html
4. Перезапускаем nginx, и проверяем, открывается ли что-нибудь из этой папки:
Для проверки открываем адреса (домен конечно нужно подставлять ваш):
http://mihanentalpo.me/.well-known/acme-challenge/index.html
http://www.mihanentalpo.me/.well-known/acme-challenge/index.html
http://redmine.mihanentalpo.me/.well-known/acme-challenge/index.html
Вы должны увидеть «Hello world» в каждом из случаев. Также, надо проверить все остальные ваши домены, если хоть один из них не будет отдавать «Hello world», надо разобраться в чём дело, так как дальше продолжать будет невозможно.
Установим и запустим клиент letsencrypt
1. Установка
Из мануала quick start следует, что установить клиент пока (июнь 2016 года) можно только из гитхаба. (Для некоторых дистрибутивов уже собраны пакеты, но в нашем родном Debian’е всё происходит не так быстро)
Итак:
# cd /opt # git clone https://github.com/letsencrypt/letsencrypt # cd letsencrypt # ./letsencrypt-auto |
# cd /opt
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto
При первом запуске, команда letsencrypt-auto установит все пакеты, необходимые ей для работы, поэтому запускать её нужно либо от root’а, либо от имени пользователя, у которого настроено sudo, так как, программа, не найдя root-доступа, пытается запустить sudo.
2. Запуск процедуры получения сертификата:
Следующая команда запустит ручной процесс получения сертификата, в котором будут прописаны все эти указанные домены.
./letsencrypt-auto certonly \ --webroot -w /var/www/letsencrypt \ -d mihanentalpo.me -d www.mihanentalpo.me \ -d redmine.mihanentalpo.me --rsa-key-size 4096 |
./letsencrypt-auto certonly \
—webroot -w /var/www/letsencrypt \
-d mihanentalpo.me -d www.mihanentalpo.me \
-d redmine.mihanentalpo.me —rsa-key-size 4096
Параметр certonly значает, что нужно только получить сертификат, и никуда автоматически вкорячивать его не надо.
Ключ —webroot означает, что файлы для проверки будут складываться в папку, указанную с ключём «-w»
Ключ -w, за которым следует путь /var/www/letsencrypt, определяет, куда нужно положить файл проверки вашего веб-сервера. А точнее, какой каталог является «корневой», в ней скрипт попытается перейти в подкаталог .well-known/acme-challenge, и положить там файлы challenge (испытаний) для проверки того, что вы владелец сервера.
Ключ -d определяет имя домена, который нужно включить в сертификат. Указать нужно все ваши поддомены. Указывать маску «*» нельзя, только конкретные названия доменов. Первый надо указывать корневой домен, и лишь потом — поддомены.
Ключ —rsa-key-size определяет, насколько сложный ключ нужно формировать (чем сложнее, тем надёжнее, 4096 хватит ещё на 30 лет развития компьютерной техники)
После запуска этой команды, в консоли откроется интерфейс, который начнёт с вами общение.
1. Клиент спросит вашу почту — нужно указать ту почту, к которой вы хотите привязать сертификаты. На неё будут приходить уведомления, когда сертификат будет близок к устареванию.
2. Нужно согласиться с пользовательским соглашением
Прохождение процедуры проверки
1. Согласиться с логированием IP-адреса
2. …. А и всё! Если конечно всё настроено правильно. Раньше здесь была инструкция на 5 пунктов о том, как подкладывать файлы challenge вручную в режиме —manual, но поскольку сейчас мы делаем через —webroot, то и процесс весь проходит сам.
3. Далее вы получите примерно такое сообщение об успехе:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/mihanentalpo.me/fullchain.pem. Your cert will expire on 2016-03-15. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - If you like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Это значит что файлы сертификатов получены (и лежат они по адресу, в моём случае, /etc/letsencrypt/live/mihanentalpo.me/), и теперь остаётся только подключить их к серверу.
Подключение сертификатов к серверу
Самый простой конфигурационный файл nginx для подключения SSL-шифрования и использования выданных сертификатов (приложение на php-fpm):
# Этот блок сервера для редиректов на https server { # Слушаем 80-й порт и перекидываем на https listen *:80; # Перенаправлять будем сайты с www и без www. server_name mydomain.ru www.mydomain.ru; # Собственно правильный редирект, чтобы не было нарушения работы ссылок return 301 https://$server_name$request_uri; } # Основной блок сервера server { #имя сервера server_name mihanentalpo.me www.mihanentalpo.me; #Используем HTTPS(SSL) listen *:443 ssl; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /etc/letsencrypt/live/mihanentalpo.me/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mihanentalpo.me/privkey.pem; # Если разбираетесь в обычной настройке сервера nginx, # то дальше можете не смотреть, пойдёт именно она. # логи access_log /mnt/data/logs/nginx/mihanentalpo.me-access.log; error_log /mnt/data/logs/nginx/mihanentalpo.me-error.log; # Индекс index index.php index.htm index.html; # Папка root /var/www/mihanentalpo.me; # Это настройка позволяющая открывать статический контент с помощью НЕ-GET запросов error_page 405 = $uri; # Папка с челенджами для ACME # (оставим её здесь как было, так как потом понадобится перевыпускать сертификат) location ~ /.well-known { location ~ /.well-known/acme-challenge/(.*) { default_type "text/plain"; root /var/www/letsencrypt; } } # Закрываем доступ к файлам начинающимся с точки location ~ /\. { deny all; access_log off; log_not_found off; } # Включаем gzip-сжатие по всему серверу gzip on; gzip_comp_level 4; # Отключаем логи для favicon и robots.txt location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } #Основной location location / { try_files $uri $uri/ /index.php?$args; } # Передаём обработку PHP-скриптов PHP-FPM location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9999; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_ignore_client_abort off; fastcgi_param APPLICATION_ENV master; } }
Если где-то есть другой 443-сервер для редиректа на 80-й порт, то может быть ошибка:
no «ssl_certificate» is defined in server listening on SSL port while SSL handshaking, client: xxx.xxx.xxx.xxx, server: 0.0.0.0:443
Подключить ssl таким образом нужно во всех поддоменах. В моём случае, для www подключение не понадобилось, так как домен с www у меня задан как алиас для основного имени, а вот для redmine потребовалось внести коррективы в конфиг-файл
Всё! Теперь, как несложно убедиться, когда вы находитесь на моём сайте, слева от его адреса нарисован замочек, чего и вашим сайтам желаю.
Проверка сертификата
Проверить сертификат, и узнать о нём максимум информации, можно с помощью различных онлайн-сервисов, таких как https://www.ssllabs.com/ssltest/. Там нужно ввести адрес вашего сайта, и можно получить массу полезной информации, касаемо не только вашего SSL-сертификата, но и того, правильно ли сделаны настройки сервера.
Обновление сертификата
Для выпуска нового сертификата, если у вас истёк предыдущий (а это будет происходить раз в несколько месяцев), нужно запустить команду
# cd /opt/letsencrypt # ./letsencrypt-auto renew |
# cd /opt/letsencrypt
# ./letsencrypt-auto renew
поскольку скрипт помнит о том, как и для каких доменов вы получали сертификаты в прошлый раз, он просто повторит процедуру.
Если у вас добавились поддомены, вы можете выполнить команду, аналогичную представленной выше, добавив туда новый домен.
При этом клиент letsencrypt спросит вас «Сертификат для этого домен уже есть. Обновить его?», на что нужно ответить «да».
После обновления сертификата нужно перезагрузить веб-сервер
/etc/init.d/nginx restart |
/etc/init.d/nginx restart
Решение проблем после обновления
После обновления сертификата и перезапуска Nginx у вас может возникнуть одна из следующих проблем:
(увидеть вы их можете, открыв свойства сертификата в браузере)
1) Дата истечения сертификата не изменилась
2) Дата истечения сертификата стала старше чем была
3) Сертификат вообще не работает
У этих проблем, как правило, одна причина: неверно создались симлинки на файлы сертификатов в папке /etc/letsencrypt/live/mysite.com (разумеется, путь должен быть с вашим именем сайта).
1) Проверяем куда ведут ссылки:
# cd /etc/letsencrypt/mysite.com # ls -l |
# cd /etc/letsencrypt/mysite.com
# ls -l
и видим что-то вроде этого (в моём случае):
lrwxrwxrwx 1 root root 55 Nov 23 07:01 ./fullchain.pem -> /etc/letsencrypt/archive/mysite.come/fullchain1.pem lrwxrwxrwx 1 root root 53 Nov 23 07:00 ./privkey.pem -> /etc/letsencrypt/archive/mysite.com/privkey1.pem |
lrwxrwxrwx 1 root root 55 Nov 23 07:01 ./fullchain.pem -> /etc/letsencrypt/archive/mysite.come/fullchain1.pem
lrwxrwxrwx 1 root root 53 Nov 23 07:00 ./privkey.pem -> /etc/letsencrypt/archive/mysite.com/privkey1.pem
2) Проверяем дату создания файлов по ссылкам:
ls -l /etc/letsencrypt/archive/mysite.com |
ls -l /etc/letsencrypt/archive/mysite.com
и видим там что-то такое:
-rw-r--r-- 1 root root 1797 Dec 16 2015 cert1.pem -rw-r--r-- 1 root root 1923 Aug 30 09:41 cert2.pem -rw-r--r-- 1 root root 1923 Nov 23 06:54 cert3.pem -rw-r--r-- 1 root root 1675 Dec 16 2015 chain1.pem -rw-r--r-- 1 root root 1647 Aug 30 09:41 chain2.pem -rw-r--r-- 1 root root 1647 Nov 23 06:54 chain3.pem -rw-r--r-- 1 root root 3472 Dec 16 2015 fullchain1.pem -rw-r--r-- 1 root root 3570 Aug 30 09:41 fullchain2.pem -rw-r--r-- 1 root root 3570 Nov 23 06:54 fullchain3.pem -rw-r--r-- 1 root root 1704 Dec 16 2015 privkey1.pem -rw-r--r-- 1 root root 1704 Aug 30 09:41 privkey2.pem -rw-r--r-- 1 root root 1704 Nov 23 06:54 privkey3.pem |
-rw-r—r— 1 root root 1797 Dec 16 2015 cert1.pem
-rw-r—r— 1 root root 1923 Aug 30 09:41 cert2.pem
-rw-r—r— 1 root root 1923 Nov 23 06:54 cert3.pem
-rw-r—r— 1 root root 1675 Dec 16 2015 chain1.pem
-rw-r—r— 1 root root 1647 Aug 30 09:41 chain2.pem
-rw-r—r— 1 root root 1647 Nov 23 06:54 chain3.pem
-rw-r—r— 1 root root 3472 Dec 16 2015 fullchain1.pem
-rw-r—r— 1 root root 3570 Aug 30 09:41 fullchain2.pem
-rw-r—r— 1 root root 3570 Nov 23 06:54 fullchain3.pem
-rw-r—r— 1 root root 1704 Dec 16 2015 privkey1.pem
-rw-r—r— 1 root root 1704 Aug 30 09:41 privkey2.pem
-rw-r—r— 1 root root 1704 Nov 23 06:54 privkey3.pem
Отсюда видно, что симлинки стоят на древние сертификаты, устаревшие ещё в 2015 году. Новые же сертификаты лежат под именами cert3.pem, chain3.pem, fullchain3.pem.
Пересоздадим симлинки:
# rm /etc/letsencrypt/live/mysite.com/fullchain.pem # rm /etc/letsencrypt/live/mysite.com/cert.pem # ln -s /etc/letsencrypt/mysite.com/fullchain3.pem /etc/letsencrypt/live/mysite.com/fullchain.pem # ln -s /etc/letsencrypt/mysite.com/cert3.pem /etc/letsencrypt/live/mysite.com/cert.pem |
# rm /etc/letsencrypt/live/mysite.com/fullchain.pem
# rm /etc/letsencrypt/live/mysite.com/cert.pem
# ln -s /etc/letsencrypt/mysite.com/fullchain3.pem /etc/letsencrypt/live/mysite.com/fullchain.pem
# ln -s /etc/letsencrypt/mysite.com/cert3.pem /etc/letsencrypt/live/mysite.com/cert.pem
И ещё раз перезагрузим nginx:
#/etc/init.d/nginx restart |
#/etc/init.d/nginx restart
P.S. Обновил запись, после того, как прочитал статью где меня же тыкают носом в —manual https://sohabr.net/habr/post/279695/
Автоматизация обновлений wildcard сертификата от Let’s Encrypt
Главная страница » Linux » Автоматизация обновлений wildcard сертификата от Let’s Encrypt
Я уже писал об установке и автоматическом продлении wildcard сертификата от Letsencrypt, но всё оказалось немного не так.
Когда пришла пора обновления сертификата, то он почему то автоматически не обновился, а в логах появилась такая запись: “PluginError: An authentication script must be provided with –manual-auth-hook when using the manual plugin non-interactively.“
То есть то, ради чего всё и затевалось, автоматическое продление сертификата, не сработало.
Разобравшись в проблеме, делюсь её решением ))
Получение нового или обновление существующего сертификата Let’s Encrypt
Во-первых пришлось перенести DNS с Mail.Ru на один из поддерживаемых certbot, я выбрал Cloudflare, всё написанное ниже относится к нему. Список всех поддерживаемых DNS можно посмотреть на официальном сайте утилиты certbot и по сути принцип работы с ними не сильно отличается.
Так же существует утилита lego, которая существенно расширяет список поддерживаемых DNS серверов. Скачать её можно на github, есть так же подробная документация с примерами использования.
Но вернёмся к “нашим баранам”.
Итак, DNS сервер мы перенесли, сменили записи у регистратора имён, подождали и убедились что всё работает. Далее займемся небольшой подготовительной работой.
В домашнем каталоге создадим папку .secrets и в ней файл cloudflare.ini. Название папки и файла на ваше усмотрение, права на неё только пользователю root.
chmod 0700 /root/.secrets/ chmod 0400 /root/.secrets/cloudflare.ini
Содержание файла cloudflare.ini (email и api key соответственно ваши):
dns_cloudflare_email = "[email protected]" dns_cloudflare_api_key = "xxxxxxxxxx_Cloudflar_Global_API_Key_xxxxxxxxxx"
API Key получаем в личном кабинете Cloudflare
Cloudflare Global API Key
На этом подготовительная работа закончена и приступаем непосредственно к получению нового или обновлению существующего сертификата, для этого выполним следующую команду:
certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \ --dns-cloudflare-propagation-seconds 25 \ -d grib69.ru -d *.grib69.ru \ --preferred-challenges dns-01
На выходе должны получить следующее:
Вывод команды certbot
Автоматизация обновлений сертификата
А вот с автоматизацией обновлений в данном случае всё действительно очень просто. Создаем файл letsencrypt.renew, даём ему права на исполнение и забрасываем в /etc/cron.weekly. Содержание файла:
#!/bin/bash /usr/bin/certbot renew --post-hook "service nginx reload"
Ну или добавляем данную команду в crontab, кому как удобнее.
На этом надеюсь эпопея с автообновлением сертификата закончилась ))
Первый вариант статьи здесь.
P.S. Если данная статья была Вам полезна, не поленитесь поставить лайк. Если остались вопросы не стесняйтесь задавать их в комментариях, будем разбираться вместе ))
Оцените данную запись
[Всего голосов: 4 — Общая оценка: 5]
Настройка Let’s Encrypt на CentOS 7 – RDB IT Support
0. Установка git и bc если не установлены раннее
sudo yum -y install git bc
1. Клонированию проекта letsencrypt из GitHub.
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
2. Получение сертификата
Переходим к проекту Letsencrypt, куда мы клонировали файлы. И запускаем генерацию сертификатов командой letsencrypt-auto certonly, используя плагин webroot.
cd /opt/letsencrypt
./letsencrypt-auto certonly -a webroot --webroot-path=/web/path -d domen.com -d www.domen.com
Если все прошло успешно, тогда в консоли вы должны увидеть примерно это:
/etc/letsencrypt/live/domen.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domen.com/privkey.pemIMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to [email protected]
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your
cert will expire on 2016-03-15. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Если вы получили ошибки, типа: Failed to connect to host for DVSNI challenge, настройте firewall вашего сервера, что бы TCP трафик проходил по портам 80 и 443.
3. Настройка TLS/SSl на веб-сервере Nginx
APACHE:
4. Перезапуск Nginx или Apache
service nginx restart && service php-fpm restart
service httpd restart
5. Настройка автопродления
Сертификаты действительный 90 дней, но рекомендуется продлевать сертификаты каждые 60 дней. Мы это автоматизируем с помощью cron.
Чтобы запустить процесс обновления для всех установленных доменов, выполните следующую команду:
/opt/letsencrypt/letsencrypt-auto renew
Так как мы недавно установили сертификат, то команда будет проверять только дату истечения срока действия и распечатает сообщение, информирующее о том, что сертификат не нуждается в продлении. Вы увидите примерно следующие в консоли:
Checking for new version...
Requesting root privileges to run letsencrypt...
/root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.confThe following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
Обратите внимание, что если вы создали сертификат в комплекте с несколькими доменами, тогда только базовое имя домена будет отображено в консоли, но вы не пугайтесь, продлены будут все домены, включенные в этот сертификат.
6. Редактируем crontab, что бы наши сертификаты обновлялись автоматически. Проверку на обновления мы будем делать каждую неделю.
Для редактирования crontab от root пользователя выполните команду:
Добавим следующие строки:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx
Этак команда создаст cron, который каждый понедельник будет выполнять автоматическое продление letsencrypt сертификатов в 2:30 и перезагружать Nginx в 2:35. Вся информация об обновлении будет логироваться в /var/log/le-renew.log.
давайте зашифровать — ekşi sözlük
client’ta tanımlanan certonly opsiyonu ile sadece sertifika üreten, apache, nginx vs. konfigürasyonlara dokunmayandır.
dökümanında bununla ilgili daha detaylı bilgi bulunabilir:
http://letsencrypt.readthedocs.org/…ing.html#manual
örnek olarak aşağıda vereceğim komut ile doğrabili
certbot-auto certonly —standalone —agree-tos —redirect —duplicate —text —email email @ adresi.com -d domain.com
örnek nginx konfigürasyonu için de bu linkten kopya çekilebilir.
ayrıca zannımca псевдоним olarak bile tanımlanabilecek bir komutu yılda 4 sefer çalıştırmak istemeyenlerin kullanmaması gereken ücretsiz servistir.
редактировать büdüt:
sertifika güncellemesi için çalıştırılacak tek komut
certbot-auto возобновить
bu yüklü sertifikaları algılayıp 30 günden azü oütikresi olga.
бир sefer elle çalıştırın, eğer hata almadıysanız 89-90 gündebelli periyotlarda çalışacak bir cron * ile sertikanızı otomatik güncellersiniz.cronda 15 günde bir çalıştırmak en mantıklısı.
яни йок амелелик фалан.
cron nasıl mı oluşturuluyor? http://crontab-generator.org/
crontab-generatorda «команда для выполнения» kısmına ekleyeceğim komut ne barındırmalı? sertifika yenileyip web sunucusu yazılımını yeniden başlatmalı
«команда для выполнения» kısmına yazacağım şey? / bin / sh / letsencrypt / indirilen / full / yolu / certbot-auto Renew && /etc/init.d/nginx(veya apache2) restart
oluşan cron nasıl mı ekleniyor? «crontab -e»
arada bir de indirdiğiniz klasörde git pull diyip güncellersiniz, hatta onu da crona ekleyin o kadar tembelseniz.
nginx ile ayarlayamayanlar için de;
öncelikle birazdan vereceğim konfigürasyon http2 barındırdığından nginx sürümünüz http / 2 yi tam olarak desteklemeli. sürüm 1.9.5 den büyük veya eşit olmalı. ubuntuda nginx / разработка ppa’sını rahatlıkla kullanabilirsiniz. разработка dese de paketler stable sürümler.
buyrun bu da örnek nginx ayarı, şu an ubuntu server 14.04 lts makinede bunu kullanıyorum:
http://pastebin.com/1fxkpyew
edit büdüt 2: certbot nginxakumyüne dunny baya cipherlar için, gayet de iş görüyor.webroot pah’tir, veya eski tip nginx kapa açtır, обновить ile falan da uğraşmıyorsunuz hatta bu sayede. cronda arkada kendi hallediyor.
Конфигурация SSL | GitLab
Доступные задачи настройки SSL
Omnibus-GitLab поддерживает несколько распространенных вариантов использования SSL-конфигурации.
- Разрешить
https
подключения к службам экземпляра GitLab - Настроить пакеты общедоступных сертификатов для подключений к внешним ресурсам
Хост-услуги
Администраторы могут включить безопасный http, используя любой метод, поддерживаемый службой GitLab.
Сервис | Ручной SSL | Давайте зашифруем |
---|---|---|
Первичный домен экземпляра GitLab | Да | Да |
Реестр контейнеров | Да | Да |
Маттермост | Да | Да |
Страницы GitLab | Да | Нет |
Let’s Encrypt Integration
GitLab можно интегрировать с Let’s Encrypt.
Основной экземпляр GitLab
История версий
- Введено в GitLab 10.5 и отключено по умолчанию.
- Включено по умолчанию в GitLab 10.7 и новее, если
external_url
установлен с
протокол https и никакие сертификаты не настроены.
Примечание:
Для правильной работы проверки Let’s Encrypt порты 80 и 443 будут
должны быть доступны для серверов Let’s Encrypt, на которых выполняется проверка. Также обратите внимание, что проверка
в настоящее время не работает с нестандартными портами.
Осторожно:
Администраторы устанавливают или обновляют GitLab 10.7 или новее и не планируют использовать
Let’s Encrypt должен установить letsencrypt ['enable'] = false
в /etc/gitlab/gitlab.rb
для отключения.
Добавьте следующие записи в /etc/gitlab/gitlab.rb
, чтобы включить Let’s Encrypt
поддержка основного домена:
letsencrypt ['enable'] = true # GitLab 10.5 и 10.6 требуется эта опция
external_url "https://gitlab.example.com" # Необходимо использовать протокол https
letsencrypt ['contact_emails'] = ['[email protected]'] # Необязательно
Наконечник:
Сертификаты, выданные Let’s Encrypt , истекают каждые девяносто дней. Необязательный contact_emails
настройка вызывает отправку предупреждения об истечении срока действия на настроенный адрес, когда приближается этот срок.
Компоненты GitLab
Введено в GitLab 11.0.
Следуйте инструкциям, чтобы включить базовую интеграцию Let’s Encrypt и
измените /etc/gitlab/gitlab.rb
любым из следующих подходящих:
registry_external_url "https://registry.example.com" # реестр контейнеров, должен использовать протокол https
questionmost_external_url "https://mattermost.example.com" #attermost, должен использовать протокол https
#registry_nginx ['ssl_certificate'] = "path / to / cert" # Должен отсутствовать или закомментирован
Примечание:
Сертификат Let’s Encrypt создается с помощью основного GitLab.
instance в качестве основного имени сертификата.Дополнительные услуги
такие как реестр, добавляются как альтернативные имена к одному и тому же
сертификат. Обратите внимание, что в приведенном выше примере основным доменом является gitlab.example.com
и
домен реестра — registry.example.com
. Администраторы не нужны
беспокоиться о настройке подстановочных сертификатов.
Автоматическое возобновление шифрования
Осторожно:
Администраторы устанавливают или обновляют GitLab 12.1 или новее и планируют использовать
их собственный сертификат Let’s Encrypt должен установить letsencrypt ['enable'] = false
в / etc / gitlab / gitlab.
руб. в
отключить автоматическое продление. В противном случае, gitlab-ctl переконфигурировать
может попытаться обновить
сертификаты и, таким образом, перезаписать их.
Установки по умолчанию обновляют расписание после полуночи каждые 4 дня. Минута определяется значением в external_url
, чтобы помочь распределить нагрузку.
на восходящих серверах Let's Encrypt
.
Expl
Обновите свой SSL в WHM, используя Let’s Encrypt
Время чтения: 2 минуты
В недавнем выпуске cPanel & WHM версии 58 была добавлена функция AutoSSL, этот инструмент можно использовать для автоматического предоставления SSL с подтверждением домена для доменов на ваших серверах WHM и cPanel.
Первоначально эта функция была выпущена с поддержкой только SSL-сертификатов на базе cPanel (на базе Comodo), с планами поддержки большего числа поставщиков по мере развития событий. На данный момент серверы cPanel и WHM, работающие под управлением версии 58.0.17 и выше, теперь также могут использовать Let’s Encrypt в качестве поставщика SSL.
Предполетная проверка
- Эти инструкции предназначены специально для управляемого сервера Liquid Web с cPanel.
- На сервере должна быть запущена cPanel & WHM версии 58.0,17 или выше.
- Командная строка и доступ на корневом уровне через SSH будут необходимы для выполнения этого руководства.
Включить функцию Let’s Encrypt Auto SSL Provider
Чтобы установить плагин провайдера Let’s Encrypt AutoSSL, вы просто войдете на сервер как пользователь root через SSH и выполните следующую команду:
# / scripts / install_lets_encrypt_autossl_provider
При запуске будут добавлены и установлены необходимые файлы RPM для поддержки Let’s Encrypt в качестве поставщика AutoSSL.Команда должна дать результат, подобный следующему:
Установлен RPM cpanel-letsencrypt! AutoSSL теперь может использовать Let’s Encrypt.
Включение доменов с помощью AutoSSL
После входа в WHM для своего сервера.
- Найдите « Manage AutoSSL » в верхнем левом поле поиска.
- В раскрывающемся списке выберите « Manage AutoSSL ».
- Затем выберите поставщика AutoSSL, которого вы хотите использовать, для этого примера мы выберем cPanel (Powered by Comodo). Если вас интересует более быстрый процесс, вы можете выполнить описанные выше шаги, но с помощью Let’s Encrypt вместо cPanel (Powered by Comodo), которая выполняется за минуты, а не часы.
- Затем нажмите « Сохранить » внизу страницы.
- Выберите вкладку « Управление пользователями » в верхней части страницы.
- Выберите « Включить AutoSSL », чтобы защитить свои домены с помощью AutoSSL.
- Нажмите « Проверить (ваш домен) » для SSL на каждом домене / ах.
Примечание:
Следует иметь в виду, что есть некоторые ограничения домена и субдомена, которые применяются с помощью Let’s Encrypt. Более подробную информацию об этом можно найти в документации cPanel здесь: Manage AutoSSL — Domain and rate limits.
Теперь вы успешно включили и запустили AutoSSL для выбранных вами доменов. Процесс получения SSL может занять некоторое время, от нескольких часов до двух дней. После получения AutoSSL полностью автоматизирует установку SSL.
Cài t chứng chỉ Let’s Encrypt SSL trên server HocVPS Script
Nu server của bạn ang dùng HocVPS Script, hãy làm theo từng bước hướng dẫn này để cài đặt chứng chỉ SSL Let’s Encrypt miễn phí và c tự ng gia hạn.
Давайте зашифруем là một nhà cung cấp chứng chỉ số SSL (центр сертификации) hoàn toàn miễn phí, được nhiều cá nhân và tổ chức tin dùng và đặc biệt không giới hạn.
Trong bài viết này, mình sẽ hướng dẫn các bạn từng bước cài đặt chứng chỉ Let’s Encrypt trên server cài HocVPS Script (LEMP Server, CentOS 6 và 7). Виртуальный хостинг в Hawk Host, StableHost, DreamHost, SiteGround, может быть использован через Let’s Encrypt и может быть запущен через cPanel, затем нажмите, чтобы нажать.Mời bạn tham khảo hướng dẫn cài t Let’s Encrypt trong cPanel.
Давайте зашифруем là chứng chỉ SSL loại Domain Validation tức là sau khi cài bạn s có thanh ổ khoá màu xanh trên trình duyệt. Теперь Let’s Encrypt может использовать PositiveSSL с Comodo и Standard SSL DV с GoDaddy. cũng được rất nhiều người sử dụng.
Nếu cài xong mà thanh địa chỉ chưa hiện HTTPS màu xanh, hãy tham khảo bài Hướng dẫn cài đặt SSL «xanh hoàn hảo»
Nu không nắm vững kiến thức kỹ thuật, hãy liên hệ sử dụng Dch vụ Cài đặt SSL từ Học VPS.
1 / Cài đặt chứng chỉ Let’s Encrypt
1.1 / Cài đặt Let’s Encrypt
Chúng ta sẽ clone mã nguồn của Let’s Encrypt vthư mục / opt / letsencrypt
. Bc này thực hiện giống nhau trên CentOS 6 và 7.
# Установить Git yum -y установить git # Клонировать репозиторий Let's Encrypt git clone https://github.com/letsencrypt/letsencrypt / opt / letsencrypt
Thỉnh thoảng bạn nên cập nhật mã nguồn Давайте зашифруем Github để có được tính năng mới nhất.Hoặc đôi khi chứng chỉ Позволяет зашифровать không tự động gia hạn mc dù ã kích hoạt crontab.
# cd / opt / letsencrypt && git pull
— Nếu gặp thông báo lỗi như bên dưới:
Ошибка
: ваши локальные изменения в letsencrypt-auto будут перезаписаны слиянием. Прерывание. Пожалуйста, зафиксируйте свои изменения или сохраните их перед объединением.
bạn sẽ cần sử dụng dòng lệnh này:
# cd / opt / letsencrypt && git reset --hard && git pull
— Bn có thể thể th lập tự động cập nhật mã nguồn Давайте зашифруем как crontab.
# РЕДАКТОР = nano crontab -e
Скопируйте и вставьте код заказа bên dưới vào cửa sổ terminal
0 0 1 * * cd / opt / letsencrypt && git pull
1.2 / Phát hành chứng chỉ SSL Let’s Encrypt cho domain
Để phát hành chứng chỉ SSL Let’s Encrypt cho domain có rất nhiều cách, mình sẽ sử dụng option --standalone
Cho đến tháng 5, 2016, Certbot đư
Установка бесплатного SSL-сертификата от Let’s Encrypt на Ubuntu
Letsencrypt.org — это открытый центр сертификации, поддерживаемый основными браузерами: Google Chrome, Internet Explorer, Mozilla Firefox и мобильными браузерами для Android и iOS.
Узнайте, как установить сертификат SSL с Letsencrypt.org на сервере Ubuntu.
Создание сервера Ubuntu
Для создания стандартного сервера Ubuntu:
Доступ к учетным данным сервера
Имя пользователя сервера — root .
Пароль может отображаться в разделе деталей вашего сервера:
Подключение к серверу через SSH
Вы можете установить зашифрованное сетевое соединение с вашим сервером с помощью Secure Shell (SSH).
Компьютеры с операционными системами Windows
SSH не установлен по умолчанию на компьютерах с операционными системами Windows. Чтобы установить зашифрованное сетевое соединение с помощью Secure Shell, вам понадобится дополнительная программа, например.грамм. PuTTY.
Компьютеры с операционными системами Linux
Если вы используете Linux, выполните следующие действия, чтобы установить SSH-соединение с вашим сервером:
Обновление вашего сервера
Чтобы обновить сервер, введите следующие команды:
apt-get update
apt-get обновление
Указание вашего домена на IP-адрес вашего сервера
Чтобы указать для вашего домена IP-адрес сервера, выполните следующие действия:
- Войдите в свою панель управления IONOS и выберите соответствующий пакет.
- Щелкните Управление доменами .
- Щелкните значок стрелки рядом с вашим доменом, чтобы открыть меню параметров.
- В меню параметров перейдите к Настройки домена и выберите Изменить настройки DNS .
- Выберите Другой IP-адрес и введите каждую часть IP-адреса вашего сервера в поле. Каждая часть IP отделяется точкой (.). Пример: 70.35.196.146
- Нажмите Сохранить .
Отображается страница подтверждения, информирующая вас о том, что изменения будут соответствующим образом обновлены.Как и в случае со всеми изменениями DNS, для распространения ваших изменений в Интернете может потребоваться до один час .
Установка GIT
Для установки GIT:
Предварительные требования:
Вы вошли на свой сервер.
- Введите команду
apt-get install git
. - Введите
и
и нажмите Enter.
GIT будет установлен.
Установка Apache
Чтобы установить Apache на свой сервер:
- Введите команду
apt-get install apache2
. - Нажмите Enter.
Apache будет установлен.
Клонирование клиента Let’s Encrypt
Чтобы клонировать репозиторий клиента Let’s Encrypt, введите следующие команды:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help
Установка клиента Let’s Encrypt для Apache
Чтобы установить клиент Let’s Encrypt для Apache:
Установка MOD SSL в Apache
Чтобы установить MOD SSL в Apache, введите следующую команду:
Настройка VHOSTS
Чтобы использовать SSL-шифрование для своего веб-сайта, вам необходимо создать два виртуальных хоста: один виртуальный хост для части веб-сайта, доступ к которой будет осуществляться через HTTP-соединение (общедоступный), и другой виртуальный хост для части, доступ к которой будет осуществляться через HTTPS (SSL). .
Чтобы стать пользователем root, введите следующую команду:
Продление вашего сертификата
Ваш сертификат действителен 3 месяца. Let’s Encrypt рекомендует обновлять сертификат каждые 60 дней. Чтобы обновить сертификат, введите следующую команду:
./letsencrypt-auto certonly –webroot –w / var / www / YOURDOMAIN / public_html / -d YOURDOMAIN.com
Пример:
./ letsencrypt-auto certonly –webroot –w /var/www/applicationpack1.com/public_html/ -d applicationpack1.com
.