はじめに
こんにちは!今回は、FastAPIを使ってセキュアなHTTPS通信を実現する方法について解説します。特に、Windows環境での開発に焦点を当てて説明します。
1. 必要なもの
- Python 3.7以上
- FastAPI
- uvicorn
- mkcert(ローカル開発環境用の信頼された証明書生成ツール)
2. 環境のセットアップ
FastAPIとuvicornのインストール
まず、FastAPIとuvicornをインストールしましょう。
pip install fastapi uvicorn
Windows環境でのmkcertのインストール
Windows環境でmkcertをインストールする方法はいくつかあります:
-
Chocolateyを使用する方法(推奨):
- まず、Chocolateyをインストールします。
- 管理者権限でPowerShellを開き、以下のコマンドを実行します:
choco install mkcert
-
手動でインストールする方法:
-
mkcertのGitHubリリースページから最新のWindows用バイナリ(
mkcert-v*-windows-amd64.exe
)をダウンロードします。 - ダウンロードしたファイルの名前を
mkcert.exe
に変更します。 - このファイルをシステムのPATHが通っているディレクトリ(例:
C:\Windows
)に移動するか、新しいディレクトリを作成してPATHに追加します。
-
mkcertのGitHubリリースページから最新のWindows用バイナリ(
-
Scoopを使用する方法:
-
Scoopがインストールされている場合は、以下のコマンドで簡単にインストールできます:
scoop install mkcert
-
Scoopがインストールされている場合は、以下のコマンドで簡単にインストールできます:
3. Windows環境での信頼された証明書の生成
mkcertを使用して、ローカル開発環境用の信頼された証明書を生成します。
-
mkcertをセットアップ:
管理者権限でコマンドプロンプトを開き、以下のコマンドを実行します:mkcert -install
-
localhost用の証明書を生成:
mkcert localhost 127.0.0.1 ::1
これにより、
localhost+2.pem
(証明書)とlocalhost+2-key.pem
(秘密鍵)が生成されます。
4. FastAPIアプリケーションの作成
以下のようなシンプルなFastAPIアプリケーションを作成します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World over secure HTTPS!"}
このコードをmain.py
として保存します。
5. WindowsでHTTPSアプリケーションを起動
mkcertで生成した証明書を使用して、uvicornでアプリケーションを起動します。コマンドプロンプトで以下を実行します:
uvicorn main:app --ssl-keyfile localhost+2-key.pem --ssl-certfile localhost+2.pem
6. ブラウザでの確認
ブラウザで https://localhost:8000
にアクセスします。mkcertで生成した証明書を使用しているため、ブラウザはこの接続を安全であると認識し、警告を表示しません。
Windows環境での注意点
- Windows Defenderなどのセキュリティソフトが証明書の生成やアプリケーションの実行をブロックする可能性があります。その場合は、一時的に無効にするか、例外を設定してください。
- PowerShellを使用する場合、実行ポリシーの設定が必要な場合があります。管理者権限でPowerShellを開き、
Set-ExecutionPolicy RemoteSigned
を実行してください。 - コマンドプロンプトやPowerShellを管理者権限で実行することで、多くの問題を回避できます。
本番環境での考慮事項
-
信頼された認証局の証明書を使用する:
- Let's EncryptやCertbotを使用して、無料のSSL証明書を取得します。
-
リバースプロキシの使用:
- NginxやTraefikなどのリバースプロキシを使用し、HTTPS通信の処理を任せる方法も効果的です。
-
クラウドサービスの利用:
- Heroku、AWS、Azureなどのクラウドプラットフォームを使用すると、HTTPS設定が自動的に行われる場合があります。
まとめ
以上の手順で、Windows環境でもFastAPIアプリケーションをセキュアなHTTPS経由で実行できます。mkcertを使用することで、開発環境でも信頼された証明書を使用でき、より本番環境に近い形でのテストが可能になります。
セキュアな通信は現代のWebアプリケーションにとって不可欠なので、ぜひ実装してみてください。