HTTPS এবং SSL/TLS কনফিগারেশন

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর Security Best Practices
165

FastAPI তে HTTPS এবং SSL/TLS কনফিগারেশন করা একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষত যখন আপনার অ্যাপ্লিকেশন প্রোডাকশনে চলে আসে। HTTPS (HyperText Transfer Protocol Secure) ওয়েব ব্রাউজার এবং সার্ভারের মধ্যে নিরাপদ সংযোগ তৈরি করতে SSL/TLS প্রোটোকল ব্যবহার করে। এটি ডাটা এনক্রিপ্ট করে যাতে ট্রান্সমিশন সময়ে ডাটা চুরি বা ম্যানিপুলেশন হতে না পারে।

এই গাইডে, আমরা দেখব কিভাবে SSL/TLS কনফিগারেশন করে FastAPI অ্যাপ্লিকেশনকে HTTPS-এ রান করা যায়।


Step 1: SSL/TLS সার্টিফিকেট তৈরি করা

SSL সার্টিফিকেট এবং private key প্রাপ্ত করতে আপনাকে দুটি উপায় অবলম্বন করতে হবে:

  1. Self-signed certificate (যা সাধারণত ডেভেলপমেন্ট ও টেস্টিংয়ের জন্য ব্যবহৃত হয়)
  2. CA-signed certificate (যা প্রোডাকশনে ব্যবহৃত হয়)

1.1: Self-signed SSL সার্টিফিকেট তৈরি করা

OpenSSL ব্যবহার করে আপনি একটি self-signed সার্টিফিকেট তৈরি করতে পারেন।

  1. একটি টার্মিনাল খুলুন এবং নিচের কমান্ডটি চালান:
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 কনফিগারেশন

  1. 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 দিয়ে চালু করবেন।
  1. 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 ব্যবহার করা হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...