Nginx SNI и Letsencrypt на FreeBSD; Неверный сертификат?

У меня есть VPS с 14 доменами, и я настроил Letkencrypt для автоматического получения отдельного сертификата для каждого домена со всеми включенными поддоменами. Итак, у меня есть 14 сертификатов. Очевидно, что объединение всех доменов в один сертификат - не вариант, потому что скоро я достигнет 100 доменов / субдоменов на один сертификат для Letsencrypt.

Я был счастлив в течение месяца, пока не обнаружил, что nginx обслуживает неправильные сертификаты для всех доменов, кроме одного (того, который он автоматически принимает - или , Поставлю - сервер по умолчанию для порта 443). После большой головной боли я обнаружил, что каждый сертификат SSL должен иметь свой собственный IP-адрес, а не общий. Затем я обнаружил, что для решения этой проблемы существует SNI.

$ nginx -V
TLS SNI support enabled

Так что сделайте длинную историю короче; Проблема не важно, что я Nginx упорно служить неправильный серт:

$ curl --insecure -v https://babaei.net 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
* Server certificate:
*  subject: CN=babaei.net
*  start date: Aug 28 13:30:00 2016 GMT
*  expire date: Nov 26 13:30:00 2016 GMT
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Connection #0 to host babaei.net left intact

$ curl --insecure -v https://learnmyway.net 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
* Server certificate:
*  subject: CN=babaei.net
*  start date: Aug 28 13:30:00 2016 GMT
*  expire date: Nov 26 13:30:00 2016 GMT
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Connection #0 to host learnmyway.net left intact

$ curl --insecure -v https://3rr0r.org 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
* Server certificate:
*  subject: CN=babaei.net
*  start date: Aug 28 13:30:00 2016 GMT
*  expire date: Nov 26 13:30:00 2016 GMT
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Connection #0 to host 3rr0r.org left intact

И, не поймите меня неправильно фактические сертификаты являются то, что они должны быть:

$ openssl x509 -noout -subject -in /path/to/certs/babaei.net.pem
subject= /CN=babaei.net

$ openssl x509 -noout -subject -in /path/to/certs/learnmyway.net.pem
subject= /CN=learnmyway.net

$ openssl x509 -noout -subject -in /path/to/certs/3rr0r.org.pem
subject= /CN=3rr0r.org

Так, скажем, у нас есть два домена альфа. com и omega.com. Как бы вы настроили nginx с поддержкой SNI для обслуживания правильного сертификата SSL для каждого?

server {
  server_tokens  off;

  listen  443 ssl http2;
  listen  [::]:443 ssl http2;
  server_name  www.alpha.com;

  ssl  on;
  ssl_certificate  /path/to/alpha.com/cert.pem;
  ssl_certificate_key /path/to/alpha.com/key.pem;
}

server {
  server_tokens  off;

  listen  443 ssl http2;
  listen  [::]:443 ssl http2;
  server_name  www.omega.com;

  ssl  on;
  ssl_certificate  /path/to/omega.com/cert.pem;
  ssl_certificate_key /path/to/omega.com/key.pem;
}

Спасибо

ОБНОВЛЕНИЕ : Это была исходная конфигурация: Итак, у меня есть ftp-сервер на Ubuntu 4.8 с включенным sshd. Я хотел бы иметь права записи для группы владельца на ...

Я знаю, что есть много вопросов по этому поводу, но у меня ничего не работало. Итак, у меня есть ftp-сервер на Ubuntu 4.8 с включенным sshd. Я хотел бы иметь права записи для группы владельца для каждого загруженного файла.

Сейчас права доступа к папке следующие: drwxrwxr-x И каждый загруженный файл имеет разрешения -rw-r - r -

То, что я пробовал, но ничего не меняет (с помощью FileZilla 3.21.0 или sftpd прямо на Mac):

  • настройка local_mask = 0002 в /etc/vsftpd.conf
  • настройка Подсистема sftp / usr / lib / openssh / sftp -server -u 002 или Подсистема sftp / usr / lib / openssh / sftp-server -u 0002 в / etc / ssh / sshd_config

Я перезапустил vsftpd и sshd , но все еще имеют разрешения только на чтение для группы. В чем причина этого?

0
задан 29 August 2016 в 12:54
1 ответ

Протокол SFTP включает в себя операцию для клиента по установке атрибутов файлов на сервере. Это означает, что клиенты SFTP могут устанавливать разрешения для загруженных файлов, независимо от umask.

Я могу придумать три способа выполнить то, что вы хотите:

  1. Попросите удаленного пользователя настроить его клиент, чтобы отключить установку разрешений для загруженных файлов , если это возможно. Например, вы можете увидеть настройку этого параметра в диалоговом окне WinSCP .

  2. Настройте автоматический процесс на сервере, чтобы очистить каталог, содержащий эти файлы, и настроить разрешения для любых вновь загруженных файлов.

  3. Отключите операцию SSH_FXP_SETSTAT на сервере SFTP. Для сервера OpenSSH вам придется изменить исходный код программы sftp-server . На рынке есть коммерческие решения SSH / SFTP, и одно из них может разрешить отключение этой функции.

1
ответ дан 4 December 2019 в 16:30

Теги

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