pfSense HAproxy LetsEncrypt http2
Здравейте,
От около седмица-две започнах тестове с pfSense 2.4.2, а от няколко дни го използвам в production среда!
В този пост (pfSense HAproxy LetsEncrypt http2 ) ще споделя как да инсталираме, конфигурираме и използваме HaProxy с Let’s Encrypt и най-новия http протокол – http2!
Инсталация
Трябва да инсталираме следните пакети за pfsense : acme (let’s encrypt) и haproxy-devel (dev версията е 1.8 която поддържа http2).
Конфигуриране
HaProxy
След като сме инсталирали HaProxy, е необходимо да създадем backend чрез който да може да инсталираме и подновяваме Let’s Encrypt сертификати.
Избираме си име – примерно localacmeserver който да работи на localhost на порт 8126 (порта е много важен за frontend частта!)
Следва да направим и два frontend-а които да работят на порт 80 и порт 443.
Първия HTTP-to-HTTPS ще служи за препращане на всичкия трафик от порт 80 към HTTPS (порт 443) с едно изключение – заявките от Let’s Encrypt ще бъдат обработвани локално от localacmeserver (порт 8126). Това се прави ето така :
Намираме Default backend, access control lists and actions и създаваме acme. За expression избираме Path starts with: , на Not избираме yes, и за Value слагаме : /.well-known/acme-challenge
Така всички заявки от типа /.well-known/acme-challenge ще бъдат обработвани от backend-а ни който кръстихме acme.
По-долу на Actions се описва и 302 redirect-а от HTTP към HTTPS:
Накрая избираме за default backend “acme”
Следва конфигурирането на HTTPS frontend-a ни.
Тук важното е при Access Control lists да изберем за Not – no , и да сложим същото Value – /.well-known/acme-challenge/ и при Actions да посочим, че ще използваме backend : acme.
Let’s encrypt
Нужно да си на настройм ACME акаунта от Services -> Acme certificates -> Account keys. Избераме за сървър Acme server – Let’s Encrypt production, след това кликваме на Create new account key, и след това на Register acme account key и накрая save.
Отиваме на Certificates и си създаваме нов, като тук важното е да спазим следното :
За method да изберем : standalone HTTP server а за порт да изберем 8126 , а на Action lists да спожим следните две команди :
Restart the GUI on this firewall: Select “Shell Command” and enter /etc/rc.restart_webgui
Restart HAProxy on this firewall: Select “Shell Command” and enter /usr/local/etc/rc.d/haproxy.sh restart
Така когато ни се поднови автоматични сертификата след 60 дни, HaProxy сървъра ще се рестартира автоматично и ще вземе новият сертификат за съответният домейн.
HaProxy Http2
Включването на http2 в haproxy 1.8 е много лесно.
Избираме HTTPS backend-a ни и срещу IP адреса му в полето Advanced добавяме следното : alpn h2,http/1.1
Препорачително е да изключим старите SSL протоколи – SSLv2 , SSLv3 , TLSv10 и TLSv11
На Advanced ssl options слагаме :
force-tlsv12 no-tls-tickets
На
ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
Резултатът
След като приключим с настройките е хубаво да тестваме всичко дали е ок. В моят случай всичко мина нормално и ето и резултатите от
https://tools.keycdn.com/http2-test и https://www.ssllabs.com/ssltest/analyze.html?d=nqma.net
Това е! 🙂