SSL/TLS კონფიგურაცია
PRX-WAF Let's Encrypt-ისგან (ACME v2) TLS სერთიფიკატების ავტომატურ მოპოვება-განახლებს, ხელით სერთიფიკატ-კონფიგურაციასა და HTTP/3-ს QUIC-ის გავლით მხარს უჭერს. ეს გვერდი HTTPS-თან დაკავშირებულ ყველა კონფიგურაციას მოიცავს.
ავტომატური სერთიფიკატები (Let's Encrypt)
PRX-WAF instant-acme ბიბლიოთეკას იყენებს TLS სერთიფიკატების ავტომატურად Let's Encrypt-ისგან მოსაპოვებლად და განახლებისთვის. SSL-ჩართვით ჰოსტის კონფიგურაციისას PRX-WAF:
- ACME HTTP-01 გამოწვევებზე 80-ე პორტზე პასუხს სცემს
- Let's Encrypt-ისგან სერთიფიკატს მოიპოვებს
- სერთიფიკატს მონაცემთა ბაზაში ინახავს
- ვადის გასვლამდე ავტომატურად განაახლებს
TIP
ავტომატური სერთიფიკატების მუშაობისთვის ACME HTTP-01 გამოწვევ-ვალიდაციისთვის 80-ე პორტი ინტერნეტიდან ხელმისაწვდომი უნდა იყოს.
ხელით სერთიფიკატები
ავტომატური ACME შეუფერებელი გარემოებისთვის სერთიფიკატები ხელით კონფიგურირდება:
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"ადმინ UI-ის გავლით სერთიფიკატების ატვირთვაც შეიძლება:
- გადადი SSL Certificates-ზე sidebar-ში
- დააჭირე Upload Certificate
- სერთიფიკატ-ჯაჭვი (PEM) და პირადი გასაღები (PEM) მიაწოდე
- სერთიფიკატი ჰოსტს მიაბი
ან API-ის გავლით:
curl -X POST http://localhost:9527/api/certificates \
-H "Authorization: Bearer $TOKEN" \
-F "cert=@/path/to/cert.pem" \
-F "key=@/path/to/key.pem" \
-F "host=example.com"TLS Listener
PRX-WAF HTTPS ტრაფიკს კონფიგურირებულ TLS მისამართზე ისმენს:
[proxy]
listen_addr = "0.0.0.0:80" # HTTP
listen_addr_tls = "0.0.0.0:443" # HTTPSHTTP/3 (QUIC)
PRX-WAF HTTP/3-ს Quinn QUIC ბიბლიოთეკის გავლით მხარს უჭერს. კონფიგურაციაში ჩართვა:
[http3]
enabled = true
listen_addr = "0.0.0.0:443"
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"WARNING
HTTP/3-ს სწორი TLS სერთიფიკატი სჭირდება. HTTP/3-ის ჩართვისას cert-ისა და key-ის გზები მითითებული უნდა იყოს. Let's Encrypt-ის ავტომატური სერთიფიკატები HTTP/3-ისთვისაც მხარდაჭერილია.
HTTP/3 HTTPS-ის (443) ერთ და იმავე პორტზე UDP-ის გავლით სრულდება. QUIC-ის მხარდამჭერი კლიენტები ავტომატურად upgrade ხდება, სხვები კი TCP-ის გავლით HTTP/2 ან HTTP/1.1-ს უბრუნდება.
HTTPS გადამისამართება
80-ე (HTTP) და 443-ე (HTTPS) პორტებიანი ჰოსტების კონფიგურაციით HTTP ტრაფიკი HTTPS-ზე გადამისამართება. SSL-კონფიგურირებული ჰოსტის HTTP მოთხოვნებს PRX-WAF ავტომატურად HTTPS-ის ეკვივალენტებზე გადამისამართებს.
სერთიფიკატ-საცავი
ყველა სერთიფიკატი (ავტომატური და ხელით) PostgreSQL მონაცემთა ბაზაში ინახება. certificates ცხრილი (მიგრაცია 0003) ინახავს:
- სერთიფიკატ-ჯაჭვს (PEM)
- პირად გასაღებს (AES-256-GCM-ით დაშიფრული)
- დომენ-სახელს
- ვადის გასვლის თარიღს
- ACME ანგარიშ-ინფორმაციას (ავტო-განახლებისთვის)
INFO
პირადი გასაღებები AES-256-GCM-ით დასვენებისას დაშიფრულია. დაშიფვრის გასაღები კონფიგურაციიდან გამოიყვანება. მონაცემთა ბაზაში დაუშიფვრელი პირადი გასაღებების შენახვა არ შეიძლება.
Docker HTTPS-ით
Docker-ში გაშვებისას TLS ტრაფიკისთვის 443-ე პორტის მეპირება:
# docker-compose.yml
services:
prx-waf:
ports:
- "80:80"
- "443:443"
- "9527:9527"HTTP/3-ისთვის UDP პორტის მეპირებაც:
ports:
- "80:80"
- "443:443/tcp"
- "443:443/udp" # HTTP/3 QUIC
- "9527:9527"საუკეთესო პრაქტიკები
წარმოებაში ყოველთვის HTTPS-ის გამოყენება. HTTP-ი მხოლოდ ACME გამოწვევებს უნდა ემსახურებოდეს და HTTPS-ზე გადამისამართებდეს.
HTTP/3-ის ჩართვა მხარდამჭერი კლიენტებისთვის. QUIC უფრო სწრაფ კავშირ-დამყარებასა და გაუმჯობესებულ შესრულებას გვაძლევს დანაკარგ-ქსელებზე.
ავტომატური სერთიფიკატების გამოყენება შესაძლებლობის შემთხვევაში. Let's Encrypt-ის სერთიფიკატები უფასოა, ყველა ბრაუზერს ენდობა და PRX-WAF ავტომატურად განაახლებს.
ადმინ API-ზე წვდომის შეზღუდვა. ადმინ API მხოლოდ სანდო ქსელებიდან უნდა იყოს ხელმისაწვდომი:
[security]
admin_ip_allowlist = ["10.0.0.0/8", "172.16.0.0/12"]შემდეგი ნაბიჯები
- Reverse Proxy -- backend-ის მარშრუტიზება და ჰოსტ-კონფიგურაცია
- Gateway მიმოხილვა -- პასუხ-ქეშირება და tunnels
- Cluster-ის რეჟიმი -- mTLS სერთიფიკატებიანი მრავალ-კვანძი TLS