Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNI и https за общество проектите #26

Open
tochev opened this issue Sep 2, 2014 · 16 comments
Open

SNI и https за общество проектите #26

tochev opened this issue Sep 2, 2014 · 16 comments

Comments

@tochev
Copy link

tochev commented Sep 2, 2014

Да се вземат SSL сертификати за проектите (startssl дават безплатни) и да се настроят.

Да се включи https://en.wikipedia.org/wiki/Server_Name_Indication т.к. проектите се host-ват от едно IP.

Евентуално да се изключи referеl проверката за csrf на django проектите.

@mitio
Copy link
Member

mitio commented Sep 2, 2014

Супер, не знаех за SNI. Мерси много за насоката. Поддръжката изглежда приемливо широка. В момента сме пуснали https само на един сайт (https://pitaigi.bg/) и не е било проблем, но скоро ще стане. Бих могъл да се грижа аз за това. А мога и да ти дам root достъп до host машината и да помагаш и ти.

А сертификатите от startssl trusted ли са от браузърите? За "Питай ги" купих един тригодишен сертификат за ок. $15 от gogetssl.com, което смятам, че е съвсем приемливо.

@mitio
Copy link
Member

mitio commented Sep 2, 2014

@tochev, добавих ключа rattus@rattus-laptop на [email protected]. Това е хост машината. В нея има LXC контейнери за всеки проект. Създават се с този скрипт - намира се в /root/container. Разгледай го. Файловата система на контейнерите се вижда в host машината, например за контейнера pitaigi е /var/lib/lxc/pitaigi/rootfs. Мрежово, контейнерите са с локални IP-та и са в NAT зад host машината. На нея има един Nginx (/etc/nginx/...), който прави HTTP прокси навътре, към контейнерите. SSL нагласяме и на host-а, и в контейнера. Държим сертификатите в /etc/certificates. OpenSSL на host-а изглежда, че поддържа SNI. Така че сме в играта.

@tochev
Copy link
Author

tochev commented Sep 2, 2014

Ами доколкото знам и от опита ми са trusted (т.е. на моя domain съм с такова).

За да го издадеш ти трябва достъп до admin@domain mail-a.

@tochev
Copy link
Author

tochev commented Sep 2, 2014

@mitio Ок, събери сертификатите и мога да ги настроя като имам време тия дни.

@mitio
Copy link
Member

mitio commented Sep 2, 2014

За съжаление няма да имам възможност да го направя тези дни. Иска ми се да пуснем gov.obshtestvo.bg на https. Може да пробваме startssl за тази цел, тъкмо да тестваме дали са trusted и дали SNI работи прилично. До контейнера на gov може да си направиш лесно достъп (добавяш си ключа през rootfs-а и го достъпваш през SSH port forwarding-а отвън). Мисля, че може да верифицираш сертификат и с достъп до самия домейн. Ако не, Крокодила управлява имейлите на домейните ни, може той да направи каквото е необходимо.

Та, ако имаш време тия дни, пробвай да подкараш SNI с един startssl сертификaт на gov.obshtestvo.bg. Там е Rails приложение. Понеже аз може да не съм на линия, @tsikov може да ти дава допълнителна информация.

@antitoxic
Copy link
Member

Aз съм много ЗА да пратим на Точо достъп до главния server. Аз съм по-некомпетентен от Точо, а имам достъп :)

Пък и, някои issue-та могат да бъдат по-бързо затворено отколкото report-нати.

@tochev
Copy link
Author

tochev commented Sep 2, 2014

@mitio, ок ще видя какво мога да направя утре вечерта, че maniax-a е на балкан конф този weekend.

@tochev
Copy link
Author

tochev commented Sep 3, 2014

Status Report:

= tl;dr =

= long version =

Направих account на startssl.com, на името на mitio с поща ssl@obshtestvo .
Трябва да видим на кого и как ще дам сертификата за достъп. (Трябва да си разменим gpg ключовете)

ssl@obshtestvo е пренасочено към мен, postmaster@obshtestvo е към мен и крокодила.

Безплатните сертификати се издават за top level domain + един subdomain. Заради това gov.obshtestvo.bg сертификата е валиден за obshtesvo.bg и gov.obshtevo.bg, но не и www.gov.obshtestvo.bg .

В момента съм създал 2 сертификата:

За да се активират другите domain-и трябва да се получи 1 писмо на hostmaster@domain (може postmaster@) от [email protected] с auth code. Заради spam filter-a не винаги тръгва от първия път. Самото подписване отнема някакво време защото са почнали да ги валидират хора.

Самата инсталация става само с пипане на /etc/nginx/sites-available/. Малко документация ако някой трябва да се занимава:

mkdir /etc/certificates/FOO
cd /etc/certificates/FOO
openssl req -new -nodes -sha256 -keyout FOO.key -out FOO.csr -newkey rsa:4096
# get certificate using the csr from startssl in FOO.crt
# some documentation https://github.com/ioerror/duraconf/tree/master/startssl
cat FOO.crt  ../obshtestvo.bg/startssl.certchain > FOO.chained.crt
# edit /etc/nginx/sites-available/FOO based on /etc/nginx/sites-available/pitatigi

Няколко неща за текущия https setup:

  • https default-a е obshtestvo.bg, което значи че browser-и без SNI ще виждат този сертификат
  • сложил съм задължително forward secrecy , което не се поддържа от IE<=8 на XP
  • ssl конфигурацията е взаимствана от https://github.com/ioerror/duraconf/blob/master/configs/nginx/nginx.conf , което значи че определени шифри са разрешени, а не както преди - определени шифри да са забранени
  • старата конфигурация е закоментирана в pitaigi
  • по принцип е хубаво http://foo permanently да redirect-ва към https, което беше направено за pitaigi, но не съм го направил за другите
  • strict transport security (казва на browser-a да достъпва този site само по https) е сложено на 1 ден, recommended minimum-a е 180 дена, но това значи commitment да има има https (също така трябва да се види дали да включва subdomains - по-добре не)
  • включен е ssl caching (note: при SNI setup той трябва да е включен за всички site-ове или изключен)
  • TLSv1.2 беше изключен на pitaigi и в примерния conf, не знам защо - може би трябва да се пита този който го е настройвал дали е имал някаква причина
  • @mitio добавил съм add_header X-Frame-Options DENY; - трябва да се говори с maintainer-ите на проектите дали не им пречи (и да се махне ако е проблем)

По obshtestvo.bg трябва да се пипне, защото iframe-ва status.obshtestvo.bg по http, отворил съм issue.

= Подробен статус на setup-a и compatibility =

= TODO summary =

  • да се даде сертификата за достъп до startssl
  • да се потвърди с maintainer-ите на проектите че "X-Frame-Options DENY" не ги бърка
  • да се уточни кой трябва да е default SSL site-a
  • да се уточни дали да redirect-ваме до https по подразбиране
  • да се уточни колко дена искаме да е Strict-Transport-Security
  • да се уточни дали искаме XP с IE8 или forward secrecy
  • да се направят сертификати за другите проекти (кой и кога, maniax-а е на конф този weekend)

Чакам feedback по todo-тата.

@tochev
Copy link
Author

tochev commented Sep 3, 2014

P.S. не видях смисъл от ssl на guest-овете и не съм го включвал, но съм го оставил на pitaigi.
IMO само се губи computation време а и ако gov.obshtetvo.bg бъде компроментиран ще изтече сертификат валиден за obshtestvo.bg

@mitio
Copy link
Member

mitio commented Sep 3, 2014

Точо, страхотна работа!

Ето списъка, с коментари от мен:

  • да се даде сертификата за достъп до startssl
  • да се потвърди с maintainer-ите на проектите че "X-Frame-Options DENY" не ги бърка - Това може ли да е per-site, или е глобално? Ако може да е per-site, може да го сложим във всички конфигурации индивидуално и ако се наложи, ще се махне от конкретен проект.
  • да се уточни кой трябва да е default SSL site-a - Общество.бг е окей да е по подразбиране.
  • да се уточни дали да redirect-ваме до https по подразбиране - _Аз съм _за* да се препраща.*
  • да се уточни колко дена искаме да е Strict-Transport-Security - Примерно, една седмица?
  • да се уточни дали искаме XP с IE8 или forward secrecy - Същия въпрос като за X-Frame-Options и какво става, ако не се поддържа. Има някои проекти, които е добре да работят и на по-стари браузъри.
  • да се направят сертификати за другите проекти (кой и кога, maniax-а е на конф този weekend) - Не е спешно.

Бих искал и аз да получавам писма от тези имейли, които сте направили.

P.S. Конфигурацията на pitaigi най-вероятно е базирана на примерния шаблон от тук: http://alaveteli.org/docs/installing/manual_install/#nginx-with-thin

@tochev
Copy link
Author

tochev commented Sep 4, 2014

  • вечерта ще сложа auto redirect и ще увелича strict transport security-то (без obshtesto.bg заради http content-a)
  • "X-Frame-Options DENY" е per-site, даже може да е per-location, в момента съм го set-нал за тези, на които съм пипал конфигурацията
  • това с FS може би може да е per site, но май не и когато е на default SNI host-a (говоря малко наизуст, но тук сигурно зависи и от browser-a), друг проблем с IE8 (and lower) на XP е че, освен че нямат FS
  • за старите browser-и - проблема е и SNI-a, т.е. следните "интересни" browser-и ще могат да виждат само сертификата на obshtestvo.bg
  • хм, alaveteli вече нямат ssl_protocols директива в конф-а...
  • за fw-a на mail-ите пиши на крокодила, даже направо можеш да му кажеш да ти пренасочи всички hostmaster@domain

P.S. трябва да ме образоваш на priv за тия checkbox-и :)

@mitio
Copy link
Member

mitio commented Sep 16, 2014

@tochev Би ли могъл да подкараш https на data.obshtestvo.bg когато имаш възможност? С препращане към https.

@tochev
Copy link
Author

tochev commented Sep 16, 2014

Подадох заявка, ако ми я обработят до час ще го направя тази вечер, ако не - за съжаление, ще остане за утре вечерта.

@mitio
Copy link
Member

mitio commented Sep 16, 2014

@tochev, май трябва да спрем автоматичното препращане засега. Много се извинявам, грешката е моя. Не прецених, че в момента го ползваме за тестове и имаме проблеми с AJAX-заявките (както и на самия сайт).

@tochev
Copy link
Author

tochev commented Sep 16, 2014

@mitio спряно е, но трябва да направите hard reset на browser-ите (друга сесия) заради 301

@tochev
Copy link
Author

tochev commented Sep 16, 2014

Иначе някъде в сайта има load на http://data.obshtestvo.bg/api/i18n/bg та трябва това да стане relative или вариант 2 е да се сложи серт-а в lxc container-a, но той е и cert за obshtestvo.bg

А и има разни *.opendata - това не може да е под https (със сегашните сертификати)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants