Я запускаю nginx 1.11.3, скомпилированный из исходного кода с добавлением модуля ngx_cache_purge, на сервере Ubuntu 14.04.3.
В журнале ошибок nginx я вижу следующее:
2016/08/03 14:30:00 [warn] 21827#21827: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2016/08/03 14:30:00 [emerg] 15611#15611: BIO_new_file("/etc/letsencrypt/live/XXXXXXX.com/fullchain.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/letsencrypt/live/XXXXXXX.com/fullchain.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)
Две строки всегда идут одна за другой. Странно то, что сайт, кажется, обслуживается должным образом, и https, похоже, тоже работает, несмотря на то, что в этой ошибке там утверждается (я думаю), что он не может прочитать цепочку сертификатов.
В nginx.conf у меня есть первая строка: user www-data www-data;
Если я сделаю ps aux | grep nginx
, Я вижу, что главный процесс работает как root, а рабочий и кеш-процессы как www-data - как мне кажется. Я запускаю nginx через sudo service nginx start
.
Я заметил одну вещь: что бы я ни пробовал, сшивание OCSP не работает. Единственная смутная мысль, которая у меня была, это то, что когда nginx пытается выполнить какую-то часть согласования SSL, возможно, он открывает другой процесс, который должен быть root для доступа к каталогам letsencrypt / live / *, но этот процесс не запускается как root . Просто дикая догадка.
Что касается каталога / etc / letsencrypt, он принадлежит пользователю root, имеет набор drwxr-xr-x, поддиректории live и archive, установленные на drwx ------, отдельные папки сайта внутри тех, которые установлены на drwxr-xr-x. Индивидуальные символические ссылки на ключи / сертификаты в реальном времени устанавливаются на lrwxrwxrwx, а фактические ключи / сертификаты в архиве устанавливаются на -rw-r - r--
Там есть еще один вопрос об этом, но он остался без ответа.
nginx -V вывод, если это полезно:
nginx version: nginx/1.11.3
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
built with OpenSSL 1.0.2h 3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --add-module=/opt/nginx_cachepurge_module/ngx_cache_purge --add-dynamic-module=debian/extra/njs-0.1.0/nginx --with-threads --with-stream --with-stream_ssl_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro'
Я понял это. Для некоторых из его согласований https - я думаю, только первое согласование https каждого блока сервера после запуска nginx - nginx запускает временный процесс пользователя root, который затем немедленно закрывается, как только согласование. Для меня это не удалось, потому что я сам скомпилировал nginx после установки версии репозитория. Хотя я удалил стандартную версию с apt-get remove
перед установкой моего собственного скомпилированного nginx некоторая часть исходного сценария запуска осталась позади, и когда мой новый nginx пытался развернуть этот процесс (и, похоже, только этот процесс, никакая другая часть), он терпел неудачу. Я решил, выполнив полную apt-get remove --purge
а затем переустановить мою скомпилированную версию.
Вы должны сделать свои закрытые ключи доступными для чтения группой ssl-cert. Пытаться
sudo chown -R root:ssl-cert /etc/letsencrypt/live/XXXXXXX.com/