Як встановити та використовувати скрипт acme.sh для отримання безкоштовних сертифікатів SSL у Linux

Існує кілька популярних методів створення сертифікатів SSL та TLS у Linux. Одним із найпопулярніших методів видачі SSL-сертифікатів є Let's Encrypt, центр сертифікації, що пропонує безкоштовні SSL-сертифікати. Існує ще більш простий спосіб видачі сертифіката, що не вимагає будь-яких залежностей та вимог. Сценарій acme.sh, написаний на Shell, спрощує створення та встановлення сертифікатів SSL у системах Linux. У цій статті ми дізнаємось, як встановити скрипт acme.sh в системі Linux і як використовувати його для створення та встановлення SSL-сертифікатів.

Установка acme.sh

Установка acme.sh – Простий і зрозумілий процес. Виконайте вказівки нижче, щоб встановити програму.

Метод 1: використання команди curl

curl https://get.acme.sh | sh

Метод 2: використання репозиторію git

git clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install

Після завершення встановлення виконайте наведену нижче команду для перевірки.

Створити SSL-сертифікат

Генерація сертифікатів SSL за допомогою acme.sh – дуже простий процес. Виконайте такі дії, щоб створити сертифікат.

Створіть сертифікат для одного домену за допомогою режиму веб-кореня.

acme.sh --issue -d vitux.com -w /home/wwwroot/vitux.com

Створити сертифікат для кількох доменів в одному сертифікаті

acme.sh --issue -d vitux.com -d www.vitux.com -d example.vitux.com -w /home/wwwroot/vitux.com

/home/wwwroot/vitux.com — це коренева папка веб-сайту, де розміщено файл веб-сайту. Не забудьте надати доступ до запису до кореневої папки веб-сайту.

vitux.com – це доменне ім'я, яке я використовував для створення сертифікатів SSL. Ви можете вибрати своє доменне ім'я відповідно.

Усі доменні імена мають бути вказані в одному кореневому каталозі веб-сайту.

Створений сертифікат SSL буде розміщено в каталозі ~/.acme.sh/ .

Де ім'я домену — це каталог, створений за допомогою вашого домену, наданого під час створення сертифіката.

Видати сертифікат за допомогою автономного сервера

Використовуйте наступну команду, щоб створити сертифікат SSL за допомогою автономного сервера.

acme.sh --issue --standalone-d vitux.com

Для кількох доменів

acme.sh --issue --standalone -d vitux.com -d www.vitux.com -d example.vitux.com

Для прослуховування TCP-порту 80 потрібна роздільна здатність Sudo або користувача root. Порт 80 має бути вільним для прослуховування на сервері.

Створити сертифікат SSL за допомогою автономного сервера SSL

Використовуйте наступну команду для створення сертифіката SSL за допомогою автономного сервера SSL. У цьому прикладі я використовував домен linuxways.com для демонстрації. Під час створення сертифіката враховуйте власне доменне ім'я.

acme.sh --issue --alpn -d vitux.com -d www.vitux.com -d example.vitux.com

Для прослуховування TCP-порту 443 потрібні дозволи Sudo або користувача root. Крім того, не забудьте звільнити порт 443 для прослуховування, інакше з'являться запити на його звільнення.

Використовуйте режим Apache для створення сертифікатів

Режим Webroot рекомендується створити SSL-сертифікат для запуску веб-сервера. Якщо в якості веб-сервера використовується Apache, для видачі сертифіката можна використовувати режим Apache. Цей режим не записує файли до кореневого каталогу веб-сайту.

Цей режим повинен взаємодіяти з веб-сервером Apache, тому вам потрібні права root/sudo.

acme.sh --issue --apache -d vitux.com www.vitux.com

Наведена вище команда створює тільки файл сертифіката. Щоб встановити сертифікат, вам потрібно вказати каталог файлу сертифіката у файлі конфігурації Apache.

Використовуйте режим nginx для видачі сертифіката

Зокрема, якщо ви використовуєте nginx як веб-сервер, замість режиму webroot можна використовувати режим nginx. Все, що вам потрібно, це права root/sudo, оскільки вони взаємодіють із веб-сервером nginx. Цей режим не буде записувати файли до кореневого каталогу веб-сайту.

acme.sh --issue --nginx -d vitux.com www.vitux.com

Наведена вище команда згенерує лише сертифікат. Для встановлення вам необхідно вказати каталог файлу сертифіката у конфігураційному файлі nginx.

Видати сертифікат для домену з підстановними знаками

Генерувати сертифікати для доменів з знаками підстановки дуже просто. Замість параметра -d використовуйте домен із знаками підстановки:

acme.sh --issue -d vitux.com -d *.vitux.com --dns dns_cf

Параметр –dns вказує, який хостер DNS ви використовуєте, dns_cf означає Cloudflare.

Продовжіть SSL-сертифікат Let's Encrypt за допомогою acme.sh

Під час встановлення acme.sh він створює завдання cron для оновлення сертифіката SSL кожні 60 днів. Тому вам не потрібно продовжувати вручну сертифікат. Однак ви можете продовжити сертифікат за допомогою опції force наступним чином:

acme.sh --renew -d vitux.com --force

Щоб знайти завдання cron, виконайте наведену нижче команду.

Каталог файлів журналу

Файл журналу acme.sh знаходиться у каталозі ~/.acme.sh. За промовчанням створення файлу журналу не увімкнено. Внесіть такі зміни до файлу account.conf.

cd ~/.acme.sh vi account.conf

Тепер використовуйте наступну команду, щоб знайти створений файл журналу.

cd ~/.acme.sh tail -f acme.sh.log

Висновок

У цій статті ми дізнаємось, як встановити скрипт acme.sh для генерації SSL-сертифікатів у системах Linux. Я показав, як створювати сертифікати SSL для кількох доменів одночасно і як оновлювати сертифікати SSL.

Статті з цієї тематики:

  • Як отримати сертифікат Let's Encrypt за допомогою перевірки DNS за допомогою acme-dns-certbot в Ubuntu 18.04
  • Як запросити сертифікат LetsEncrypt за допомогою Acme
  • Встановіть основні програми в Ubuntu за допомогою SimpleSH
  • Як синхронізувати файли та каталоги за допомогою Zaloha.sh
  • Легко змініть тему Linux/macOS за допомогою theme.sh |
  • У чому різниця між #!/bin/sh та #!/bin/bash?
  • Порівняйте sh Shell і Bash
  • Як вирішити bin/sh: 1: джерело не знайдено
  • Як змусити сценарій оболонки (.sh) чекати введення користувача – Bash
  • Як завантажувати та обмінюватися файлами з терміналу за допомогою Transfer.sh
  • Cheat.sh дає вам доступ до кращих шпаргалок з Linux та програмування
  • Як безкоштовно розгорнути статичні веб-сайти за допомогою Surge.sh
  • Testssl.sh – тестування шифрування TLS/SSL у будь-якому місці на будь-якому порту
  • Виправити помилку «Відмовлено у дозволі» під час запуску сценарію Bash в Linux
  • [Оновлення PPA] GIMP 2.10.22 з підтримкою сценаріїв Python в Ubuntu 18.04

Усі права захищені. © Linux-Console.net • 2019-2024

Як встановити та використовувати скрипт acme.sh для отримання безкоштовних сертифікатів SSL у Linux - Druzhba.v.ua

У цій статті ми покажемо, як додати новий сертифікат до списку довірених кореневих сертифікатів у Linux.

Наприклад, ви використовуєте на своєму сайті самопідписаний SSL/TLS сертифікат і не бажаєте, щоб на клієнтах при відкритті сайту з'являлася помилка SEC_ERROR_UNKNOWN_ISSUER.

У цьому прикладі ми встановимо в Linux кореневий сертифікат Мінцифри (Russian Trusted Sub CA), на базі якого зараз випускаються сертифікати для сайтів багатьох компаній та держорганів РФ.

Або це може бути самопідписаний сертифікат із сайту IIS на Windows.

Щоб перевірити, чи ваш хост Linux не може перевірити (і відповідно не довіряє) SSL сертифікату на певному сайті, виконайте команду:

$ curl -I https://www.sberbank.ru

curl: (60) Certificate SSL probl: unable to get local issuer certificate. More details here: https://curl.haxx.se/docs/sslcerts.html curl failed до verify legitimacy of the server and therefore could no established a secure connection to it.Для того, щоб дізнатися більше про цю позицію і як fix it, натисніть на веб-сторінку, яку згадують.

У цьому випадку нам потрібно додати кореневий центр сертифікації цього сайту до списку довірених кореневих сертифікатів Linux.

Встановлення кореневого сертифіката в Linux

Для оновлення сховища довірених сертифікатів у Linux вам потрібний файл сертифіката у форматі PEM з розширенням файлу .crt. PEM сертифікат є текстовий файл у форматі base64, який містить на початку файлу рядок -BEGIN CERTIFICATE– і наприкінці – END CERTIFICATE –.

Якщо файл сертифіката у форматі DER, ви можете конвертувати його в PEM формат за допомогою утиліти openssl:

$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

Спочатку розглянемо, як додасть кореневий сертифікат вашого CA довірені в дистрибутивах Linux на базі DEB (Ubuntu, Debian, Mint, Kali Linux).

Скопіюйте файли ваших сертифікатів у сховище сертифікатів у каталог usr/local/share/ca-certificates/:

$ sudo cp my_trusted_sub_ca.crt /usr/local/share/ca-certificates/
$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/

Оновіть сховище сертифікатів командою:

$ sudo update-ca-certificates -v

$ sudo apt-get install -y ca-certificates

Якщо сертифікати успішно додані, з'явиться повідомлення про те, що сертфікат скопійовано в /etc/ssl/certs/:

Updating certificates in /etc/ssl/certs… 2 added, 9 removed; done. Running hooks in /etc/ca-certificates/update.d

$ sudo dpkg-reconfigure ca-certificates

Виберіть із списку сертифікати, які потрібно додати до довірених.

У Linux список довірених сертифікатів міститься у файлі /etc/ssl/certs/ca-certificates.crt. Обидві розглянуті вище команди оновлять цей файл і додадуть інформацію про нові сертифікати.

Ви можете перевірити, чи ваші сертифікати були додані в довірені за допомогою команди:

Вкажіть частину Common Name сертифіката замість YourCASubj для пошуку в сховищі по subject.

Ви можете переконатися, що ваша ОС довіряє сертифікату за допомогою команди:

$ openssl verify my_trusted_sub_ca.crt

error 20 at 0 depth lookup: unable to get local issuer certificate error my_trusted_sub_ca.crt: verification failed

Тепер перевірте, чи на сайті використовується довірений SSL сертифікат за допомогою curl:

$ curl -I https://www.sberbank.ru

Всі ОК, сертифікат довірені < HTTPOnly: secure >.

$ sudo mkdir /usr/share/ca-certificates/extra

$ sudo cp my.crt /usr/share/ca-certificates/extra/mycert1.crt
$ sudo vim /etc/ca-certificates.conf

Щоб видалити сертифікат, видаліть ваш crt файл:

$ sudo rm /usr/local/share/ca-certificates/yourcert.crt

І оновіть сховище:

$ sudo update-ca-certificates –fresh

У дистрибутивах Linux на базі RPM (CentOS, Oracle, RHEL, Rocky Linux, Fedora) для додавання сертифіката довірені:

  1. Встановіть пакет ca-certificates: # yum install ca-certificates
  2. Скопіюйте файл сертифіката в каталог /etc/pki/ca-trust/source/anchors/: # cp mycert.crt /etc/pki/ca-trust/source/anchors/
  3. Оновіть сховище:
    # update-ca-trust force-enable
    # update-ca-trust extract

Додати довірений кореневий сертифікат для браузерів Mozilla, Chrome

Тепер усі системні утиліти довірятимуть сайтам, що використовують даний CA. Але це не вплине на веб-браузери Mozilla Firefox або Google Chrome. Вони, як і раніше, показуватимуть попередження про недовірений сертифікат.

Річ у тім, що браузери Firefox, Chromium, Google Chrome, Vivaldi та навіть поштовий клієнт Mozilla Thunderbird не використовують системне сховище сертифікатів Linux. Сховище сертифікатів для цих програм знаходиться у директорії користувача у файлі cert8.db (для Mozilla) або cert9.db (для Chromium та Chrome).Для оновлення цих сховищ сертифікатів використовується утиліта certutil із пакету libnss3-tools.

$ sudo apt install libnss3-tools

Тепер виконайте такі скрипти для додавання сертифікатів до сховища через NSS:

#!/bin/bash
certfile="my_rusted_root_ca.crt"
certname="My Root CA1"
для certDB в $(find ~/ -name "cert8.db")
do
certdir = $ (dirname $);
certutil -A -n "$" -t "TCu, Cu, Tu" -i $ -d dbm:$
done
для certDB в $(find ~/ -name "cert9.db")
do
certdir = $ (dirname $);
certutil -A -n "$" -t "TCu, Cu, Tu" -i $ -d sql:$
done

Після запуску скрипту сайтам з даним CA будуть довіряти всі браузери.

Як встановити та використовувати скрипт acme.sh для отримання безкоштовних сертифікатів SSL у Linux - Druzhba.v.ua

TLS або протокол безпеки транспортного рівня та попередній йому протокол SSL використовуються для укладання звичайного трафіку в захищену оболонку із шифруванням. Використовуючи цю технологію, сервери можуть безпечно надсилати інформацію клієнтам без перехоплення повідомлень та їх прочитання третьою стороною.

У цьому посібнику ми покажемо, як створити та використовувати самопідписаний сертифікат SSL з веб-сервером Apache в Ubuntu 20.04.

Примітка. Самопідписаний сертифікат шифрує зв'язок між вашим сервером та будь-якими клієнтами. Однак оскільки він не підписаний довіреним центром сертифікації, що входить до базового комплекту постачання браузерів та операційних систем, користувачі не можуть використовувати цей сертифікат для автоматичної автентифікації вашого сервера. В результаті цього ваші користувачі побачать помилку безпеки під час відвідування вашого сайту.

Через це обмеження самопідписані сертифікати не підходять для виробничого середовища, призначеного для широкого загалу.Вони зазвичай використовуються для тестування або захисту некритичних сервісів, які використовуються одиночними користувачами або невеликими групами користувачів, які можуть додавати сертифікат до списку довірених через альтернативні канали.

Щоб отримати готовий сертифікат для виробничого середовища, скористайтесь безкоштовним центром сертифікації Let's Encrypt. Щоб дізнатися, як завантажити та налаштувати сертифікат Let's Encrypt, скористайтесь нашим навчальним модулем «Захист Apache за допомогою Let's Encrypt в Ubuntu 20.04».

Попередні вимоги

Для проходження цього навчального модуля вам знадобиться таке:

  • Доступ до Ubuntu 20.04 з користувачем без прав root з привілеями sudo. Наше «Посібник з початкового настроювання сервера Ubuntu 20.04» розповідає про те, як створити такого користувача.
  • Також вам потрібно встановити Apache. Ви можете встановити Apache за допомогою apt. Для початку оновіть локальний індекс пакетів, щоб відобразити останні оновлення:

Потім установіть пакет apache2 :

Якщо ви використовуєте брандмауер ufw, відкрийте порти http і https:

Після виконання цих кроків переконайтеся, що ви увійшли до системи як користувач без прав root, і продовжити роботу з цим посібником.

Крок 1 – Активація mod_ssl

Перш ніж використовувати будь-які сертифікати SSL, нам необхідно активувати модуль Apache mod_ssl , який забезпечує підтримку шифрування SSL.

Активуйте mod_ssl за допомогою команди a2enmod:

Перезапустіть Apache для активації модуля:

Тепер модуль mod_ssl активовано та готовий до використання.

Крок 2 – Створення сертифіката SSL

Тепер Apache готовий використовувати шифрування, і ми можемо переходити до створення нового сертифіката SSL.Сертифікат зберігатиме певну базову інформацію про ваш сайт і супроводжуватиметься файлом ключа, який дозволяє серверу безпечно обробляти шифровані дані.

Ми можемо створити ключ SSL та файли сертифіката за допомогою команди openssl :

Після введення команди відкриється діалогове вікно, де ви можете ввести інформацію про свій сайт. Перш ніж перейти до цього кроку, подивимося, що робить команда, що відправляється нами:

  • openssl : це інструмент командного рядка, призначений для створення сертифікатів, ключів та інших файлів OpenSSL та управління ними.
  • req -x509 : вказує на те, що ми хочемо використовувати керування запитами на підписання сертифікатів X.509 (CSR). X.509 — це інфраструктура відкритих ключів, яка використовується стандартами SSL та TLS для керування ключами та сертифікатами.
  • -nodes : Наказує OpenSSL пропустити опцію захисту нашого сертифіката кодовою фразою. Для читання цього файлу при запуску сервера без втручання користувача нам буде потрібно Apache. Кодова фраза запобігатиме цьому, оскільки в іншому випадку нам довелося б вводити її після кожного перезапуску.
  • -days 365 : ця опція встановлює період дії сертифіката. Тут ми встановлюємо термін дії одного року. Багато сучасних браузерів відхиляють будь-які сертифікати, термін дії яких перевищує один рік.
  • -newkey rsa:2048 : показує, що ми хочемо створити новий сертифікат і новий ключ одночасно. Ми не створили потрібний ключ для підпису сертифіката на попередньому кроці, і тому нам потрібно створити його разом із сертифікатом. Частина rsa:2048 пропонує створити ключ RSA довжиною 2048 біт.
  • -keyout : цей рядок вказує OpenSSL, де розмістити файл закритого ключа, що генерується.
  • -out : Вказує OpenSSL, де розмістити створюваний сертифікат.

Вкажіть відповідні відповіді.Найважливіший рядок – це той, який запитує Common Name. Вам потрібно ввести ім'я хоста, яке ви використовуватимете для доступу до сервера, або публічну IP-адресу сервера. Важливо, щоб значення в цьому полі збігалося з даними, що вводяться в адресний рядок браузера, для доступу до сайту, оскільки невідповідність призведе до додаткових помилок безпеки.

Повний список діалогів виглядатиме приблизно так:

Country Name (2 letter code) [XX]:US State or Province Name (full name) []:Example Locality Name (eg, city) [Default City]:Example Organization Name (eg, company) [Default Company Ltd]:Example Inc Organizational Unit Name (eg, section) []:Example Dept Common Name (eg, ваш name or your server's hostname) []:your_domain_or_ip Email Address []:[email protected] 

Обидва створені вами файли будуть поміщені у відповідні підкаталоги в каталозі /etc/ssl .

Потім ми оновимо конфігурацію Apache для використання нового сертифіката та ключа.

Крок 3 — Налаштування Apache для використання SSL

Ми підготували самопідписаний сертифікат і ключ і тепер нам потрібно оновити конфігурацію Apache для їх використання. У Ubuntu ви можете помістити нові файли конфігурації Apache (вони повинні мати розширення .conf ) у каталог /etc/apache2/sites-available/ , і вони будуть завантажені під час наступного перезавантаження або перезапуску процесу Apache.

Для цього навчального модуля ми створимо новий файл із мінімальною конфігурацією. Якщо ви вже налаштували Apache , і вам просто потрібно додати SSL, ви можете просто скопіювати рядки конфігурації, що починаються з SSL і переключити порт VirtualHost з 80 на 443 . Ми займемося портом 80 на наступному кроці.)

Відкрийте новий файл у каталозі /etc/apache2/sites-available:

Вставте в нього наступну мінімальну конфігурацію VirtualHost:

 ServerName your_domain_or_ip DocumentRoot /var/www/your_domain_or_ip SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key 

Оновіть рядок ServerName , вказавши ім'я для звернення до вашого сервера. Це може бути ім'я хоста, повне доменне ім'я або IP-адресу. Переконайтеся, що вибране ім'я відповідає параметру Common Name , вибраному під час створення сертифіката.

В інших рядках вказуються каталог DocumentRoot для видачі файлів, а також опції SSL, необхідні для вказівки Apache створених нами сертифікатів та ключів.

Створимо каталог DocumentRoot і помістимо в нього файл HTML для тестування:

Відкрийте новий файл index.html у текстовому редакторі:

Вставте в порожній файл наступне:

Зрозуміло, це не повний HTML файл, проте вимоги браузерів не настільки суворі, і цього буде достатньо для перевірки нашої конфігурації.

Збережіть та закрийте файл. Після цього нам потрібно активувати конфігураційний файл за допомогою інструмента a2ensite :

Потім перевіримо помилки конфігурації:

Якщо перевірку буде успішно пройдено, ми отримаємо результат, що виглядає приблизно так:

Output
AH00558: apache2: Правильно не визначено значення сервера, який повністю зафіксував домашню назву, використовуючи 127.0.1.1. Натисніть 'ServerName' directive globally to suppress this message Syntax OK

Перший рядок — це повідомлення про те, що директива ServerName не задано глобально. Якщо ви хочете позбавитися цього повідомлення, ви можете задати для ServerName доменне ім'я вашого сервера або IP-адресу в каталозі /etc/apache2/apache2.conf . Це необов'язково, тому що це повідомлення не завдає жодної шкоди.

Якщо у результатах є повідомлення Syntax OK , у конфігурації немає синтаксичних помилок. Ми можемо безпечно перезавантажити Apache для внесення змін:

Тепер завантажте свій сайт у браузері, додавши префікс https://.

Ви повинні побачити повідомлення про помилку. Для самопідписаних сертифікатів це нормально! Браузер попереджає вас, що не може перевірити автентичність сервера, оскільки наш сертифікат не підписаний відомим браузеру центром сертифікації. Для цілей тестування та особистого використання цього достатньо. У вас має бути можливість натиснути кнопку «Додатково» або «Подробиціі продовжити.

Після цього браузер завантажить сторінку із повідомленням it worked! .

Примітка. Якщо ваш браузер не підключається до сервера, переконайтеся, що з'єднання не блокується брандмауером. Якщо ви використовуєте ufw, наступні команди відкриють порти 80 і 443:

Потім ми додамо до нашої конфігурації інший розділ VirtualHost для обслуговування простих запитів HTTP та їх перенаправлення в HTTPS.

Крок 4 — Перенаправлення HTTP на HTTPS

Зараз наша конфігурація відповідає лише на запити HTTPS через порт 443 . Також рекомендується відкрити для відповідей і порт 80 навіть якщо ви хочете примусово шифрувати весь трафік. Налаштуємо VirtualHost для реагування на незашифровані запити та їх перенаправлення до HTTPS.

Відкрийте файл конфігурації Apache, створений нами на попередніх кроках:

Створіть наприкінці файлу ще один блок VirtualHost для запитів через порт 80 . Використовуйте директиву ServerName, щоб прив'язати ваше доменне ім'я або IP-адресу. Потім використовуйте Redirect для перенаправлення всіх запитів на SSL VirtualHost. Не забудьте додати косу межу в кінці:

 ServerName your_domain_or_ip Redirect / https://your_domain_or_ip/ 

Після завершення правок збережіть та закрийте файл, знову протестуйте синтаксис конфігурації та перезавантажте Apache:

Ви можете протестувати нову функцію переадресації, відвідавши сайт, ввівши адресу з префіксом http:// . Ви повинні бути автоматично перенаправлені на https:// .

Висновок

Ви налаштували Apache для обслуговування шифрованих запитів за допомогою самопідписаного сертифіката SSL та перенаправлення нешифрованих запитів HTTP на адресу HTTPS.

Якщо ви плануєте використовувати SSL для загальнодоступного сайту, вам слід придбати доменне ім'я та використовувати центр сертифікації, що широко підтримується, наприклад, Let's Encrypt.

Додаткову інформацію про використання Let's Encrypt з Apache можна отримати в навчальному модулі «Захист Apache за допомогою Let's Encrypt в Ubuntu 20.04».

Такі для навчання з DigitalOcean Community. Використовуйте наші послуги для комп'ютера, зберігання, мережевих, і керованих програмами.

Related Posts