FastAPI তে HTTPS এবং SSL/TLS কনফিগারেশন করা একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষত যখন আপনার অ্যাপ্লিকেশন প্রোডাকশনে চলে আসে। HTTPS (HyperText Transfer Protocol Secure) ওয়েব ব্রাউজার এবং সার্ভারের মধ্যে নিরাপদ সংযোগ তৈরি করতে SSL/TLS প্রোটোকল ব্যবহার করে। এটি ডাটা এনক্রিপ্ট করে যাতে ট্রান্সমিশন সময়ে ডাটা চুরি বা ম্যানিপুলেশন হতে না পারে।
এই গাইডে, আমরা দেখব কিভাবে SSL/TLS কনফিগারেশন করে FastAPI অ্যাপ্লিকেশনকে HTTPS-এ রান করা যায়।
Step 1: SSL/TLS সার্টিফিকেট তৈরি করা
SSL সার্টিফিকেট এবং private key প্রাপ্ত করতে আপনাকে দুটি উপায় অবলম্বন করতে হবে:
- Self-signed certificate (যা সাধারণত ডেভেলপমেন্ট ও টেস্টিংয়ের জন্য ব্যবহৃত হয়)
- CA-signed certificate (যা প্রোডাকশনে ব্যবহৃত হয়)
1.1: Self-signed SSL সার্টিফিকেট তৈরি করা
OpenSSL ব্যবহার করে আপনি একটি self-signed সার্টিফিকেট তৈরি করতে পারেন।
- একটি টার্মিনাল খুলুন এবং নিচের কমান্ডটি চালান:
openssl genpkey -algorithm RSA -out server.key -aes256
এটি private key তৈরি করবে। তারপর SSL সার্টিফিকেট তৈরি করুন:
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -signkey server.key -out server.crt
এখানে:
server.key: আপনার private key।server.crt: সার্টিফিকেট ফাইল।
এটি server.key এবং server.crt ফাইল দুটি তৈরি করবে, যা SSL কনফিগারেশনের জন্য প্রয়োজন।
1.2: CA-signed SSL সার্টিফিকেট
প্রোডাকশনে ব্যবহারের জন্য, আপনি একটি CA (Certificate Authority)-signed সার্টিফিকেট ব্যবহার করতে পারেন। এটি সাধারণত Let's Encrypt অথবা অন্যান্য SSL সার্ভিস প্রদানকারীর মাধ্যমে করা হয়।
Step 2: FastAPI অ্যাপ্লিকেশনে HTTPS কনফিগারেশন
এখন যে সার্টিফিকেট তৈরি করা হয়েছে তা FastAPI অ্যাপে কনফিগার করা হবে।
উদাহরণ: FastAPI অ্যাপ্লিকেশন HTTPS চালানো
FastAPI-তে HTTPS চালানোর জন্য uvicorn ব্যবহার করতে হবে। এটি --ssl-keyfile এবং --ssl-certfile প্যারামিটার ব্যবহার করে SSL/TLS কনফিগারেশন পরিচালনা করে।
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, HTTPS!"}
এখন uvicorn সার্ভারটি ব্যবহার করে FastAPI অ্যাপ্লিকেশন চালাতে হবে SSL সার্টিফিকেট এবং প্রাইভেট কি ফাইল উল্লেখ করে।
uvicorn main:app --host 0.0.0.0 --port 443 --ssl-keyfile=server.key --ssl-certfile=server.crt
এখানে:
main:app: এটি অ্যাপ্লিকেশন ফাইলের নাম এবং FastAPI অ্যাপ অবজেক্টের নাম।--ssl-keyfile: আপনার private key ফাইলের পাথ।--ssl-certfile: আপনার SSL সার্টিফিকেট ফাইলের পাথ।
রেসপন্স:
এখন, আপনি ব্রাউজারে গিয়ে https://localhost অথবা https://yourdomain.com (আপনার ডোমেইনের উপর ভিত্তি করে) চেক করতে পারবেন যে FastAPI অ্যাপ HTTPS তে চলছে।
Step 3: HTTPS কনফিগারেশন প্রোডাকশনে (Reverse Proxy)
প্রোডাকশনে, আপনার FastAPI অ্যাপ্লিকেশন সাধারণত reverse proxy (যেমন Nginx বা Traefik) এর পিছনে চলে, যা SSL/TLS হ্যান্ডল করবে। আপনি যদি এমন একটি সেটআপে কাজ করেন, তাহলে SSL সার্টিফিকেটটি reverse proxy সার্ভারে কনফিগার করতে হবে এবং FastAPI অ্যাপ্লিকেশনটি HTTP-এ চলবে।
উদাহরণ: Nginx-এর সাথে SSL/TLS কনফিগারেশন
- Nginx Configuration File:
আপনার Nginx কনফিগারেশন ফাইলে নিম্নলিখিত সেটিংস যুক্ত করুন:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
proxy_pass http://localhost:8000; # FastAPI অ্যাপ্লিকেশন চালু করার পোর্ট
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
এখানে:
- SSL সার্টিফিকেট এবং প্রাইভেট কী ফাইলগুলোর পাথ সঠিকভাবে উল্লেখ করুন।
- Proxy নির্দেশ করে FastAPI অ্যাপ্লিকেশনটির IP বা পোর্ট (যেমন:
localhost:8000), যা আপনি Uvicorn দিয়ে চালু করবেন।
- FastAPI অ্যাপ্লিকেশন চালানো:
FastAPI অ্যাপ্লিকেশনটি HTTP তে চলবে এবং Nginx reverse proxy দিয়ে HTTPS হ্যান্ডল করা হবে:
uvicorn main:app --host 127.0.0.1 --port 8000
এখন, HTTPS সংযোগটি Nginx-এর মাধ্যমে আপনার FastAPI অ্যাপ্লিকেশনটিতে রিডাইরেক্ট হবে।
Step 4: SSL Certificate Renewal (Let's Encrypt)
যদি আপনি Let's Encrypt থেকে সার্টিফিকেট ব্যবহার করেন, তাহলে আপনাকে Certbot ব্যবহার করে সার্টিফিকেট রিনিউ করতে হবে।
sudo certbot --nginx -d yourdomain.com
এটি Nginx সার্ভারের জন্য SSL সার্টিফিকেট রিনিউ এবং কনফিগার করবে।
FastAPI তে HTTPS এবং SSL/TLS কনফিগারেশন সেটআপ করা খুবই সহজ। আপনি নিজের self-signed certificate তৈরি করে ডেভেলপমেন্ট বা টেস্টিং করতে পারেন অথবা প্রোডাকশনে CA-signed certificate ব্যবহার করতে পারেন। FastAPI সার্ভারকে HTTPS মোডে চালাতে uvicorn ব্যবহার করা হয় এবং প্রোডাকশনে reverse proxy (যেমন Nginx) ব্যবহার করা হয় যাতে SSL/TLS হ্যান্ডল করা যায়। SSL সার্টিফিকেট ব্যবস্থাপনার জন্য Certbot ব্যবহার করা হয়।
Read more