今までのやり方ではHTTPプロトコルでの通信をしていましたが、
HTTPSに通信プロトコルを変更することで、暗号化してのセキュアな通信に対応できるようにします
HTTPS通信では、通信先の保証などのために利用するSSLサーバー証明書が必要となります。
今回は練習用の環境構築ですので、自分で作成した証明書(自己証明書)を利用します
証明書や、証明書作成に必要な秘密鍵、公開鍵をopensslを利用して作成します。
Apacheのディレクトリのbinフォルダに移動して、以下のコマンドを実行します
C:\Apache24\bin>openssl.exe genrsa -out ..\conf\server.key 1024
実行すると、C:\Apache24\confにserver.keyという名称で秘密鍵が生成されます。
Country Name(国コード:日本の場合は"JP")
State or Province Name(都道府県)
Locality Name(市区町村)
Organization Name(組織)
Organizational Unit Name(部門)
Common Name(SSLを使うIPアドレスまたはサイト名)
Email Address(メールアドレス)
A challenge password(証明書を破棄する場合のパスワード)
An optional company name(別の組織名)
入力が完了すれば、server.csrの名称で公開鍵が生成されます
秘密鍵作成と同一のフォルダで、以下のコマンドを実行します
C:\Apache24\bin>openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt -req -signkey ..\conf\server.key -days 365
証明書作成まで完了したら、Apache側でHTTPS通信を有効にするよう設定します。
C:\Apache24\conf 内のhttpd.confに以下の内容を設定してください。
・モジュールの読み込み設定
httpd.conf内から以下の3行を検索し、すべて先頭のコメントアウトを外してモジュールを読み込むようにします。
修正前
#LoadModule ssl_module modules/mod_ssl.so
修正後
LoadModule ssl_module modules/mod_ssl.so
修正前
#Include conf/extra/httpd-ssl.conf
修正後
Include conf/extra/httpd-ssl.conf
修正前
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
修正後
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
・バーチャルホストの設定修正
Pythonを読み込むためのバーチャルホストの設定をしている際は、そちらも修正が必要です。
前項のApatch + PythonでのWebアプリケーション用サーバ作成で設定したバーチャルホストの設定に、
以下の赤文字の内容を追加してください。
ServerName localhost
DocumentRoot Flaskの作業ディレクトリ
WSGIScriptAlias /top Pythonのスクリプトファイル
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile \Apache24\conf\server.crt
SSLCertificateKeyFile \Apache24\conf\server.key
Require all granted
設定が完了したら、Apacheサーバーを(再)起動します
サーバー起動後に、https://localhost:80/top にブラウザからアクセスします
すると、正規の証明局ではないためエラーが出るので、「危険性を理解した上で接続するには」をクリック
表示された「例外を追加」ボタンををクリック
セキュリティ例外の追加が表示されるので、「セキュリティ例外を承認」をクリック
例外承認が終わり、Pythonのスクリプトが実行されれば成功です