httpsへの通信プロトコル変更 戻る
httpsへの通信プロトコル変更

今までのやり方では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の設定修正

証明書作成まで完了したら、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への通信プロトコル変更

サーバー起動後に、https://localhost:80/top にブラウザからアクセスします

すると、正規の証明局ではないためエラーが出るので、「危険性を理解した上で接続するには」をクリック

表示された「例外を追加」ボタンををクリック

セキュリティ例外の追加が表示されるので、「セキュリティ例外を承認」をクリック

例外承認が終わり、Pythonのスクリプトが実行されれば成功です