Используйте acme.sh правильно, и ваш сайт будет постоянно использовать SSL-сертификат. Это бесплатно!
Используйте acme.sh правильно, и ваш сайт будет постоянно использовать SSL-сертификат. Это бесплатно!

Некоторое время назад я задумался о покупке сервера и увидел, что в одном облаке есть сервис быстрых денег 99. Новые и старые пользователи всегда могут купить серверы по этой цене, https://www.aliyun.com/. minisite/goods?userCode=c0ngnrad, поэтому я купил сервер, затем развернул различное программное обеспечение и, наконец, настроил SSL-сертификат доменного имени с использованием acme.sh, успешно завершил развертывание моего блога, поэтому я запишу процесс для вашего. ссылка! Let's Encrypt — бесплатные сертификаты SSL/TLS (letsencrypt.org)

acme.sh Осуществленный acme протокол, Можно получить из letsencrypt Создавайте бесплатные сертификаты.

Основные шаги:

  1. Установить acme.sh
  2. Создать сертификат
  3. Скопируйте сертификат в nginx/apache или другие службы.
  4. Обновить сертификат
  5. Настроить сервер nginx
  6. возобновлять acme.sh
  7. Что делать, если что-то пойдет не так, как отладить

Подробное введение ниже.

1. Установите acme.sh

Установка проста, всего одна команда:

Язык кода:javascript
копировать
curl https://get.acme.sh | sh -s email=my@example.com

Его могут установить и использовать как обычные пользователи, так и пользователи root. Процесс установки включает в себя следующие шаги:

  1. Пучок acme.sh Установитьтебеиз home В каталоге:
Язык кода:javascript
копировать
~/.acme.sh/

и создать один shell из alias, Например .bashrc, удобный для вас изиспользовать: alias acme.sh=~/.acme.sh/acme.sh

  1. автоматически созданный для вас cronjob, каждый день 0:00 Баллы автоматически определяют все сертификаты, Если срок его действия истекает,нуждатьсявозобновлять, будет автоматически Обновить сертификат.

Дополнительные возможности установки см. на странице https://github.com/Neilpang/acme.sh/wiki/How-to-install.

Процесс установки не затронет какие-либо функции и файлы существующей системы., Все изменения ограничены каталогом «Установить»: ~/.acme.sh/

2. Создать сертификат

acme.sh Осуществленный acme Протокол поддерживает все протоколы проверки. Обычно существует два способа проверки: http и dns проверять.

1. Метод http требует размещения файла в корневом каталоге вашего веб-сайта для подтверждения владения вашим доменным именем и завершения проверки. Затем вы можете сгенерировать сертификат.
Язык кода:javascript
копировать
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/

Просто укажите доменное имя, И укажите корневой каталог извеб-сайта, в котором находится доменное имя. acme.sh Файлы проверки будут созданы автоматически. И поместите его в корневой каталог веб-сайтиз, Затем автоматически завершится проверка. Наконец, будет разумно удалить файл проверки. Весь процесс не имеет побочных эффектов.

Если вы используете из apacheсервер, acme.sh Его также можно использовать разумно из apacheиз Конфигурация Автоматически завершать проверку в, Корневой каталог сайта указывать не нужно:

Язык кода:javascript
копировать
acme.sh --issue -d mydomain.com --apache

Если вы используете из nginxсервер, Или контрпоколение, acme.sh Его также можно использовать разумно из nginxиз Конфигурация Автоматически завершать проверку в, Корневой каталог сайта указывать не нужно:

Язык кода:javascript
копировать
acme.sh --issue -d mydomain.com --nginx

Уведомление, Или apache все еще nginx модель, После того как acme.sh завершит проверку, будет восстановлено в прежнее состояние, Вы не измените себя без разрешения. Преимущество состоит в том, что вам не нужно беспокоиться о повреждении конфигурации. Есть и недостатки, Вам нужно настроить его самостоятельно ssl из Конфигурация, В противном случае сертификат можно будет успешно сгенерировать только Вы извеб-сайтвсе еще Невозможно получить доступ к https. Но в целях безопасности, ты все еще Собственный Руководствоизменять Конфигурация Бар.

Если вы не запускали ни одного web Служить, 80 порт простаивает, Так acme.sh Вы также можете притвориться одним веб-сервером, Слушайте временно80 порт, Полная проверка:

Язык кода:javascript
копировать
acme.sh --issue -d mydomain.com --standalone

Для более продвинутого использования обратитесь к: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert.

2. Ручной метод DNS: вручную добавьте запись разрешения txt к имени домена, чтобы подтвердить право собственности на доменное имя.

Преимущество этого метода в том, что Вам не нужен никакой сервер, Нет необходимости в общедоступной сети ip, Просто нужно dns проанализировать запись для завершения проверки. Недостатком является то, что если не настроить одновременно Automatic DNS API, используйте этот способ acme.sh Сертификат не будет обновляться автоматически, и вам придется каждый раз вручную повторно анализировать и подтверждать право собственности на доменное имя.

Язык кода:javascript
копировать
acme.sh --issue --dns -d mydomain.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

Затем, acme.sh Соответствующие записи синтаксического анализа будут созданы и отображены. ты Просто нужно Добавить это в панели управления доменными именами txt Просто запишите это.

Дождавшись завершения анализа, перегенерируйте сертификат:

Язык кода:javascript
копировать
acme.sh --renew -d mydomain.com \
   --yes-I-know-dns-manual-mode-enough-go-ahead-please

Обратите внимание, второй раз Здесь использовано слово из --renew

dns Реальная сила этого метода заключается в том, что его могут предоставить поставщики разрешения доменных имен. api Автоматически добавлено txt Запись завершена проверьте.

acme.sh В настоящее время поддерживается cloudflare, dnspod, cloudxns, godaddy а также ovh Автоматически интегрируются десятки других поставщиков аналитических услуг.

к dnspod Например, Сначала вам нужно войти в систему dnspod счет, Создать тебя из api id и api key, Все бесплатно. Затем:

Язык кода:javascript
копировать
export DP_Id="1234"
 
 export DP_Key="sADDsdasdgdsf"
 
 acme.sh --issue --dns dns_dp -d aa.com -d www.aa.com

Сертификат будет сгенерирован автоматически. Здесь дано из api id и api key будет автоматически записано, В будущем вы будете использовать dnspod api из времени, Нет необходимости указывать его еще раз. Просто сгенерируйте его напрямую:

Язык кода:javascript
копировать
acme.sh --issue -d mydomain2.com --dns  dns_dp

Подробнееиз api использование: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

3. скопировать/установить сертификат

После того, как предыдущий Сертификат будет сгенерирован, Далее вам необходимо отдать копию сертификата туда, где он вам действительно нужен.

Уведомление, Созданный по умолчанию из Сертификат помещается в Установить В. каталоге: ~/.acme.sh/, Пожалуйста, не используйте файлы в этом каталоге напрямую. Например: Не давайте это напрямую nginx/apache из файла конфигурации используйте приведенный ниже файл. Все файлы здесь являются внутренними, И структура каталогов может измениться.

правильныйизиспользовать Методиспользовать --install-cert команду и укажите целевое местоположение, Затем файл Сертификата будет скопирован в соответствующее место. Например:

Apache example:

Язык кода:javascript
копировать
acme.sh --install-cert -d example.com \
 --cert-file      /path/to/certfile/in/apache/cert.pem  \
 --key-file       /path/to/keyfile/in/apache/cert.key  \
 --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
 --reloadcmd     "service apache2 force-reload"

Nginx example:

Язык кода:javascript
копировать
acme.sh --install-cert -d example.com \
 --key-file       /path/to/keyfile/in/nginx/key.pem  \
 --fullchain-file /path/to/fullchain/nginx/cert.pem \
 --reloadcmd     "service nginx force-reload"

(одно маленькое напоминание, Здесь использовано слово из service nginx force-reload, нет service nginx reload, По данным тестирования, reload Сертификат не будет перезагружен, Местокиспользоватьиз force-reload)

Nginx из Конфигурация ssl_certificate использовать /etc/nginx/ssl/fullchain.cer , скорее, чем /etc/nginx/ssl/<domain>.cer ,в противном случае SSL Labs из Отчет об испытаниях Chain issues Incomplete ошибка.

--install-certКоманда можеткнесет в себе множество параметров, чтобы указать целевой файл. и можно указать reloadcmd,когда Сертификатвозобновлятькназад, reloadcmd будет вызван автоматически, чтобы сервер вступил в силу.

Подробные параметры см. по адресу: https://github.com/Neilpang/acme.sh#3-install-the-issued-cert-to-apachenginx-etc.

Стоит отметить, что, Все указанные здесь параметры будут автоматически записано, И в дальнейшем Сертификат автоматически возобновляется, автоматически вызывается снова.

4. Просмотрите информацию об установленном сертификате.

Язык кода:javascript
копировать
acme.sh --info -d example.com
 # Будет выведен следующий контент:
 DOMAIN_CONF=/root/.acme.sh/example.com/example.com.conf
 Le_Domain=example.com
 Le_Alt=no
 Le_Webroot=dns_ali
 Le_PreHook=
 Le_PostHook=
 Le_RenewHook=
 Le_API=https://acme-v02.api.letsencrypt.org/directory
 Le_Keylength=
 Le_OrderFinalize=https://acme-v02.api.letsencrypt.org/acme/finalize/23xxxx150/781xxxx4310
 Le_LinkOrder=https://acme-v02.api.letsencrypt.org/acme/order/233xxx150/781xxxx4310
 Le_LinkCert=https://acme-v02.api.letsencrypt.org/acme/cert/04cbd28xxxxxx349ecaea8d07
 Le_CertCreateTime=1649358725
 Le_CertCreateTimeStr=Thu Apr  7 19:12:05 UTC 2022
 Le_NextRenewTimeStr=Mon Jun  6 19:12:05 UTC 2022
 Le_NextRenewTime=1654456325
 Le_RealCertPath=
 Le_RealCACertPath=
 Le_RealKeyPath=/etc/acme/example.com/privkey.pem
 Le_ReloadCmd=service nginx force-reload
 Le_RealFullChainPath=/etc/acme/example.com/chain.pem

5. конфигурация nginx

Выполнение завершено 3 После этого шага, как и ожидалось, вы найдете каталог ниже. /path/to/keyfile/in/nginx/ создать два файла key.pem и cert.pem один — файл сертификата, один файл ключа.

Откройте nginx.conf или отдельный файл конфигурации, добавьте следующий контент:

Язык кода:javascript
копировать
server {
      #HTTPSиз порта доступа по умолчанию 443.
      #Если КонфигурацияHTTPSиз здесь не имеет доступа к порту по умолчанию, это может привести к сбою запуска Nginx.
      listen 443 ssl;
 
      #Заполните привязку Сертификата от доменного имени
      server_name example.com; # Вам необходимо выбрать доменное имя. Конфигурация на основе вашего фактического доменного имени.
 
      #Заполните абсолютный путь к файлу Сертификата
      ssl_certificate "/path/to/keyfile/in/nginx/cert.pem";
      #Заполните абсолютный путь к файлу закрытого ключа Сертификата
      ssl_certificate_key "/path/to/keyfile/in/nginx/key.pem";
 
      ssl_session_cache shared:SSL:1m;
      ssl_session_timeout 5m;
 
      #Пользовательские настройкииспользоватьизпротокола TLS из Типа также набор шифров (ниже приведен пример конфигурации, пожалуйста, оцените, нужна ли вам конфигурация)
      #Чем выше версия протокола TLS, тем выше безопасность связи HTTPS. Однако по сравнению с более ранней версией протокола TLS более высокая версия протокола TLS менее совместима с браузерами.
      #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      #ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
      # указывает приоритет использования набора шифров на стороне сервера. Включено по умолчанию
      ssl_prefer_server_ciphers on;
 
     root /wwwroot/example.com;
     access_log /var/log/nginx/example_com_access.log;
     error_log /var/log/nginx/example_com_error.log;
     location / {
            #root html;
            index index.html index.htm;
     }
 }

Настройка завершена, выполнить команду nginx -s reload Перезапуск nginx Вот и все.

6. Обновить сертификат

Сертификат в настоящее время находится в 60 Через 10 дней он автоматически возобновится, Никаких действий с вашей стороны не требуется. В будущем это время может быть сокращено. Но они все автоматические, Вам не нужно заботиться.

пожалуйста, убедитесь cronjob Установлен правильно, Это выглядит примерно такиз:

Язык кода:javascript
копировать
crontab  -l
 
 56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

7. Об изменении ReloadCmd

глаз Предварительное условиеизменятьReloadCmdнет специализированногоиз Заказ,Можеткпо ре Установить Сертификатреализовать ремонтизменятьreloadCmdизглазиз。 также,Установить Сертификатназад,Соответствующая информация хранится в~/.acme.sh/example.com/example.confв файлахиз,Содержаниеacme.sh --info -d example.comвыходизинформация,ноReloadCmdв файлеиспользовать ПонятноBase64кодирование。Теоретически Можеткпутем прямого ремонтаизменять Должендокумент Посещение школыизменятьReloadCmd,и при изменении,Нет необходимости в кодировке Base64.,Пишите напрямую Заказоригинальныйacme.shтакже Можеткидентифицировать。 но,example.confдокументиз Расположениеи Формат контентакназад Может Можетизменять Изменять!example.confвсегда внутреннийиспользовать, Вместо этого его можно использовать позже sqlite или MySQL Форматирование хранилища. Поэтому, как правило, не рекомендуется изменять его самостоятельно.

8. Обновите acme.sh

В настоящее время из-за acme Соглашение letsencrypt CA часты извозобновлять, поэтому acme.sh Также часто следите за синхронизацией возобновления.

Обновите acme.sh до последней версии:

Язык кода:javascript
копировать
acme.sh --upgrade

Если вы не хотите обновляться вручную, Можетк Включить автоматическийобновление:

Язык кода:javascript
копировать
acme.sh --upgrade --auto-upgrade

После этого acme.sh будет автоматически обновляться.

Вы также можете в любой момент отключить автоматическое возобновление:

Язык кода:javascript
копировать
acme.sh --upgrade --auto-upgrade  0

9. Что делать, если что-то пойдет не так:

Если что-то пойдет не так, добавьте журнал отладки:

Язык кода:javascript
копировать
acme.sh --issue  .....  --debug

или:

Язык кода:javascript
копировать
acme.sh --issue  .....  --debug  2

Пожалуйста, обратитесь к: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh.

Если в режиме проверки DNS в отладке появляются такие слова, как «время ожидания», это может быть связано с тем, что GFWbreak сломал соответствующий запрос, и вам необходимо добавить переменную среды прокси-сервера http(s). (Пожалуйста, измените в соответствии с вашими фактическими настройками)

Язык кода:javascript
копировать
export http_proxy="socks5h://localhost:1081" && export https_proxy="socks5h://localhost:1081"

Если используется Docker, полный пример конфигурации выглядит следующим образом:

Язык кода:javascript
копировать
docker run --rm  -it  \
   -v "/etc/acme":/acme.sh  \
   -e "CF_Token=[введите свою информацию]" \
   -e "CF_Account_ID=[введите свою информацию]" \
   -e "CF_Zone_ID=[введите свою информацию]" \
   -e http_proxy="socks5h://[Прокси A]:1234" \
   -e https_proxy="socks5h://[Прокси A]:1234" \
   --network контейнер:[Агент А]\
   neilpang/acme.sh \
   --issue -d example.com --dns dns_cf --debug

В приведенном выше примере используйте CloudflareизDNS для выдачи сертификата.,и ссылку на контейнер [Агент А] через Пучокacme.sh,Для пересылки запросов на завивку (пожалуйста, измените их в соответствии с вашими фактическими настройками)

наконец, Эта статья не является полным объяснением, Есть также много расширенных функций, Для более продвинутого использования из см. другие wiki страница.

https://github.com/Neilpang/acme.sh/wiki

10. Заключительные моменты, на которые следует обратить внимание

После успешного развертывания вы можете скачать его в браузере. https Просмотрите свой веб-сайт. Если на веб-странице нет вывода или не удается найти сообщение об ошибке. Если вы покупаете новый облачный сервис, вам необходимо разработать соответствующий сервер на своем сервере. ssl порт 443 . Например, Alibaba Cloud:

Таким образом, вы можете с удовольствием играть в облаке.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода