разрешение nginx отказано самому себе подписанные файлы сертификатов для конфигурации ssl на CentOs

Очень похоже на этот вопрос , но решения там не решили мою проблему.

Я пытаюсь перевернуть порт прокси 8443 на порт 4000 с самоподписанным сертификат. Я сгенерировал свой сертификат следующим образом

openssl req -newkey rsa: 2048 -sha256 -nodes -keyout certificate.key -x509 -days 365 -out certificate.pem

И я добавил серверный блок в свой nginx conf:

server {
  listen 8443 ssl;
  server_name www.mydomain.io;
  ssl_certificate /home/user/certificate.pem;
  ssl_certificate_key /home/user/certificate.key;

  location / {
    proxy_pass http://localhost:4000/;
  }
}

Но теперь, когда я пытаюсь запустить nginx с помощью systemctl start nginx , я получаю следующую ошибку:

Sep 10 06:38:52 Elixir systemd[1]: Starting The nginx HTTP and reverse proxy server...
Sep 10 06:38:52 Elixir nginx[25347]: nginx: [emerg] BIO_new_file("/home/user/certificate.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/home/user/certificate.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)
Sep 10 06:38:52 Elixir nginx[25347]: nginx: configuration file /etc/nginx/nginx.conf test failed

Изменить: файлы имеют права доступа 777, но не принадлежат пользователю nginx.

0
задан 27 February 2019 в 17:01
2 ответа

Эта проблема, скорее всего, возникла из-за того, что selinux пометил файл как что-то небезопасное, например unlimited_u поэтому запрещает доступ к нему независимо от прав доступа к файлу. Ярлыки для файла можно проверить, запустив ls -Z .

Решение состоит в том, чтобы изменить метку (также известную как selinux context ) файла на то, что разрешено nginx. open:

chcon -t httpd_config_t /path/to/file
1
ответ дан 4 December 2019 в 13:38

Очень строгое соглашение для служб - иметь их настройки и файлы конфигурации в / etc / , а не в вашем домашнем каталоге.

Во-вторых, первое, что нужно исследовать. в ошибке типа fopen ... permission denied действительно являются разрешениями файловой системы для файла и полного пути к каталогу , поскольку они применяются к любому пользователю, запускаемому nginx в виде.

(Домашние каталоги пользователей обычно закрыты для других пользователей ...)

Используйте namei , чтобы отобразить разрешения полного пути:

namei -mov /home/user/certificate.pem

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

1
ответ дан 4 December 2019 в 13:38

Теги

Похожие вопросы