Web Development HTTPS এবং SSL/TLS কনফিগারেশন গাইড ও নোট

280

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

Are you sure to start over?

Loading...