پرش به مطلب اصلی

TlsServer

TlsServer سمت server پروتکل TLS در WaterWall است و با OpenSSL کار می‌کند. این نود handshake واقعی TLS انجام می‌دهد، TLS recordهای ورودی را به cleartext برای نود بعدی تبدیل می‌کند و payload برگشتی را دوباره داخل TLS record می‌فرستد.

جایگاه رایج

TcpListener -> TlsServer -> HttpServer -> SomeService
TcpListener -> TlsServer -> TcpConnector

اگر کلاینت بیرونی با HTTPS/TLS به WaterWall وصل می‌شود، معمولا TlsServer بعد از TcpListener قرار می‌گیرد.

نمونه تنظیم

{
"name": "tls-server",
"type": "TlsServer",
"settings": {
"cert-file": "/etc/waterwall/fullchain.pem",
"key-file": "/etc/waterwall/privkey.pem",
"min-version": "TLSv1.2",
"max-version": "TLSv1.3",
"session-cache": "none",
"session-tickets": true
},
"next": "http-or-service"
}

تنظیمات رایج

گزینهتوضیح
گزینهاجباری
------
cert-fileبله
key-fileبله
sniخیر
alpnsخیر
min-versionخیر
max-versionخیر
ciphersخیر
prefer-server-ciphersخیر
session-timeoutخیر
session-cacheخیر
session-cache-sizeخیر
session-ticketsخیر

نکته‌ها

  • TlsServer درباره HTTP چیزی نمی‌داند؛ اگر HTTP لازم دارید HttpServer را بعد از آن بگذارید.
  • shared برای session-cache در پیاده‌سازی فعلی پشتیبانی نمی‌شود.
  • اگر بعد از TLS می‌خواهید HTTP را parse کنید، HttpServer را بعد از این نود بگذارید.
  • این نود با TlsClient واتروال هم می‌تواند جفت شود، اما فقط برای ارتباط WaterWall نیست؛ می‌تواند TLS واقعی از کلاینت‌های بیرونی را هم terminate کند.