Как я могу получить доверенный сертификат от certbot на Nginx?

#laravel #nginx #ssl #forge

#ларавель #nginx #ssl #ковать

Вопрос:

Я пытаюсь запустить Certbot на сервере Laravel Forge. Это ошибка, которую я продолжаю получать

nginx: [emerg] не удается загрузить сертификат «/etc/nginx/ssl/mydomain.ca/1263486/server.crt»: ошибка PEM_read_bio_X509_AUX() не удалась (SSL: ошибка:0909006C:процедуры PEM:get_name:нет начальной строки:Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ) nginx: файл конфигурации /etc/nginx/nginx.conf тест не удался

насколько я понимаю, это означает, что в первой строке написано НАЧАТЬ СЕРТИФИКАТ, а не ДОВЕРЕННЫЙ СЕРТИФИКАТ, как я могу получить доверенный сертификат? Конфигурация Nginix ниже.

 # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/mydomain.ca/before/*;  server {   listen 443 ssl http2;  listen [::]:443 ssl http2;  server_name .mydomain.ca;  server_tokens off;  root /home/forge/mydomain.ca/;  # FORGE SSL (DO NOT REMOVE!) ssl_certificate /etc/nginx/ssl/mydomain.ca/1263486/server.crt; ssl_certificate_key /etc/nginx/ssl/mydomain.ca/1263486/server.key;  ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers (MY CIPHER HERE) ssl_prefer_server_ciphers off; ssl_dhparam /etc/nginx/dhparams.pem;  add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff";  index index.html index.htm index.php;  charset utf-8;  # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/mydomain.ca/server/*;  location / {  try_files $uri $uri/ /index.php?$query_string; }  location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; }  access_log off; error_log /var/log/nginx/mydomain.ca-error.log error;  error_page 404 /index.php;  location ~ .php$ {  fastcgi_split_path_info ^(. .php)(/. )$;  fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  fastcgi_index index.php;  include fastcgi_params; }  location ~ /.(?!well-known).* {  deny all; } }  # FORGE CONFIG (DO NOT REMOVE!) include forge-conf/mydomain.ca/after/*;  

Комментарии:

1. Как /etc/nginx/ssl/mydomain.ca/1263486/server.crt выглядит содержимое? Вы проверили свои журналы certbot на наличие ошибок?

2. @miken32 содержимое файла: etc/letsencrypt/live/mydomain.ca/fullchain.pem

3. Так почему же ваша конфигурация Nginx ищет /etc/nginx/ssl/mydomain.ca/1263486/server.crt ?

4. Честно говоря, я не уверен, я впервые работаю с чем-то подобным. Следует ли изменить путь к этому?

Ответ №1:

Вам необходимо выполнить следующие действия:

  1. установите пакет certbot
  2. добавьте серверный блок для прослушивания порта 80
 server {  listen 80;  server_name mydomain.ca;   location ^~ /.well-known/acme-challenge {  root /home/forge/certbot;  default_type "text/plain";  try_files $uri =404;  } }  
  1. измените пути к сертификатам в своей конфигурации
 ssl_certificate /etc/letsencrypt/live/mydomain.ca/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mydomain.ca/privkey.pem;  
  1. получение сертификатов с помощью команды
 certbot certonly --cert-name mydomain.ca -d mydomain.ca -d *.mydomain.ca --webroot --webroot-path /home/forge/certbot  
  1. перезагрузите конфигурацию nginx командой
 nginx -t amp;amp; nginx -s reload  
  1. добавьте задачу cron для обновления сертификатов
 0 0 */80 * * certbot renew  

Комментарии:

1. Это похоже на очень общие инструкции. Как они будут решать конкретную проблему, с которой сталкиваются в этом вопросе?

2. Это полезная инструкция, чтобы иметь возможность получить доверенный сертификат от certbot

3. Certbot помещает сертификаты в путь /etc/letsencrypt/live/имя домена, я рекомендую изменить пути сертификатов.

4. Чтобы иметь возможность подтвердить право собственности на домен, ему необходимо прослушать порт 80. Я рекомендую добавить соответствующий блок конфигурации сервера.

5. @AlekseyVaganov Я смог воспользоваться вашим ответом и понять, что мне нужно было сделать. Самой большой проблемой, с которой я столкнулся, была проверка сертификата как надежного, все, что мне действительно нужно было сделать, это использовать путь, который вы упомянули в шаге 3.