#nginx #ssl #https #docker-compose #lets-encrypt
Вопрос:
Я сошелся SSL certificates
Let's encrypt
и утвердился HTTPS communication
вместе docker-compose's nginx container
. Мне удалось успешно подключиться, но я беспокоился о разрешениях доступа к папке.
Среда есть amazon linux 2
, и в ней хранятся SSL-сертификаты, полученные с помощью Let’s encrypt /etc/letsencrypt/live/www.example.com/
. Здесь разрешения на доступ для the live folder
являются следующими.
drwx------ 3 root root 47 Nov 9 02:12 live
Таким образом, похоже, что ec2-user
пользователь не может получить к нему доступ.
Чтобы использовать SSL-сертификаты, я скопировал файлы pem в соответствующую папку root privileges
и смог успешно подключиться , но правильно ли это?
На этот раз я скопировал файл pem /home/ec2-user/ssl
, как показано ниже.
drwxrwxr-x 2 ec2-user ec2-user 93 Nov 9 05:32 ssl
[ec2-user@ip-***-***-***-*** ssl]$ ls -la
total 24
drwxrwxr-x 2 ec2-user ec2-user 93 Nov 9 05:32 .
drwx------ 7 ec2-user ec2-user 163 Nov 9 05:31 ..
-rw-r--r-- 1 root root 1854 Nov 9 03:14 cert.pem
-rw-r--r-- 1 root root 3749 Nov 9 03:14 chain.pem
-rw-r--r-- 1 root root 5603 Nov 9 05:32 fullchain.pem
-rw------- 1 root root 1708 Nov 9 03:14 privkey.pem
-rw-r--r-- 1 ec2-user ec2-user 692 Nov 9 03:14 README
Кстати, когда я получил доступ к файлу /etc/letsencrypt/live/www.example.com/
, из которого я скопировал файл , и сделал docker-compose up -d
это, я получил следующую ошибку.
Вероятно, это ошибка в разрешениях доступа.
[emerg] 1#1: cannot load certificate "/etc/letsencrypt/live/www.example.com/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/www.example.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
Читатель сказал НЕ ДВИГАТЬСЯ.
докер-составить.yml -> тома nginx
volumes:
...
- /etc/letsencrypt/live/www.example.com:/etc/nginx/certs #error
# - /home/ec2-user/ssl:/etc/nginx/certs #ok
...
по умолчанию.conf
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
...
}
Ответ №1:
Я решил эту проблему.
Файлы pem в /etc/letsencrypt/live/www.example.com/
были символическими ссылками. Так что мне следовало бы сесть на /etc/letsencrypt/
коня .
Настоящие файлы pem находятся внутри /etc/letsencrypt/archive/www.example.com/
.
докер-составить.yml -> тома nginx
volumes:
...
- /etc/letsencrypt:/etc/letsencrypt
...
по умолчанию.conf
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/www.example.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.net/privkey.pem;
...
}