Почему чашки иногда не могут считать его ключ TLS и сертификат в зависимости от местоположения символьной ссылки?

У меня есть чашки, не удающиеся установить соединение по https://.

→ curl https://possum.int.gg3.net:631/adsf -I
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to possum.int.gg3.net:631 

strace на процессе показывает, что ему не удается открыть ключ:

[pid 12399] access("/etc/cups/ssl/possum.int.gg3.net.crt", R_OK) = 0
[pid 12399] access("/etc/cups/ssl/possum.int.gg3.net.key", R_OK) = 0
[pid 12399] access("/etc/cups/ssl/possum.int.gg3.net.crt", R_OK) = 0
[pid 12399] access("/etc/cups/ssl/possum.int.gg3.net.key", R_OK) = 0
[pid 12399] openat(AT_FDCWD, "/etc/cups/ssl/possum.int.gg3.net.key", O_RDONLY) = -1 EACCES (Permission denied)

Это с моим /etc/cups/ssl каталог, бывший похожий на это:

root@possum:/etc/cups/ssl# find /possum.int.gg3.net.* ./ -exec ls -dgG {} + ; 
drwx------ 1   88 Oct  1 19:52 ./
lrwxrwxrwx 1   23 Oct  1 19:52 ./possum.int.gg3.net.crt -> /possum.int.gg3.net.crt
lrwxrwxrwx 1   23 Oct  1 19:52 ./possum.int.gg3.net.key -> /possum.int.gg3.net.key
-rw------- 1 3810 Oct  1 18:58 /possum.int.gg3.net.crt
-rw------- 1 1708 Oct  1 18:58 /possum.int.gg3.net.key

Однако, если я перемещаю файлы в /tmp или к /opt, это начинает работать.

root@possum:/etc/cups/ssl# mv -vi /possum.int.gg3.net.* /opt/
renamed '/possum.int.gg3.net.crt' -> '/opt/possum.int.gg3.net.crt'
renamed '/possum.int.gg3.net.key' -> '/opt/possum.int.gg3.net.key'

root@possum:/etc/cups/ssl# ln -svf -t . /opt/possum.int.gg3.net.*
'./possum.int.gg3.net.crt' -> '/opt/possum.int.gg3.net.crt'
'./possum.int.gg3.net.key' -> '/opt/possum.int.gg3.net.key'

Попробованный несколько других каталогов, но не может выяснить шаблон. Например, это работает, если ссылки указывают на /tmp, /opt, или ./file/, но не работает, если они указывают на /usr, /, или /etc/letsencrypt/live/possum.int.gg3.net (последний - то, что я действительно должен сделать).

0
задан 1 October 2018 в 03:59

1 ответ

Оказывается, что это было проблемой с apparmor профилем чашек, который не позволял процессу читать файлы в/etc/letsencrypt каталоге.

Я недавно установил livepatch, который установил snapd, который установил и включил apparmor.

Решение состоит в том, чтобы позволить их в профиле. Например.

$ sudo tee -a /etc/apparmor.d/local/usr.sbin.cupsd <<EOF
>   /etc/letsencrypt/live/** r,
>   /etc/letsencrypt/archive/** r,
> EOF
$ sudo systemctl restart apparmor
0
ответ дан 27 October 2019 в 09:29

Другие вопросы по тегам:

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