Apache をSSL 化する。
Contents
- ローカル環境だからSSL 要らんわ! とか思っていましたがSSL 接続にしたい状況になりました。
- 調べてみると、SSL のモジュールを入れる必要があるとか、パッチを充てる必要があるとか。
- OPEN-SSL とか調べてましたが、インストール時からすでにSSL に対応したApacheのバージョンがあることを示唆している記事をみつける。
- どうやら、自分のインストールしたApache(↓)はSSL 対応らしい。←今ここ。
使用しているApache のバージョンについて。
ここの「Apache 2.4.46 Win64」をインストールしました。
SSL 適用の手順
すでにインストールされているんだから、「SSL 化」ではなく、「SSL 適用」ですね^^。
以下手順。
- Apache の設定
- httpd.conf の修正
- Apache 上のSSL モジュール読み込み。
- mod_socache_shmcb モジュールの読み込み。
- http-ssl.conf の修正。
- ドキュメントルート
- 証明書読み込み
- httpd.conf の修正
- 証明書関連のファイルを生成
- 秘密KEY を生成。
- 公開KEY の生成。
- 証明書の生成。
Apache の設定
httpd.conf の修正。
Apache 上のSSL のモジュール読み込む設定です。
httpd.conf を修正して、SSL のモジュールを読み込むように設定します。
LoadModule ssl_module modules/mod_ssl.so
後述しますが、mod_socache_shmcb モジュールも必要。
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
もう1か所、http-ssl.conf を読み込むように設定します。
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
httpd-ssl.conf の修正
読み込むように設定した、http-ssl.conf の編集です。
ドキュメントルート などを編集。
あと、生成した証明書のファイルを読み込んでいる個所もあるので、デフォルトでちゃんと読み込むようになっているかをチェックしましょう。
「${SRVROOT}」はhttpd.conf の最初の方で定義されてるヤツですね(↓)。
*** httpd.conf ***
Define SRVROOT "c:/Apache24"
*** httpd-ssl.conf ***
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/wp_zapping"
ServerName zapping.beccou.com:443
ServerAdmin admin@beccou.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
証明書の読み込み個所。一応確認する。
SSLCertificateFile "${SRVROOT}/conf/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
証明書関連のファイルを生成
秘密KEY を生成。
Apache\bin にて下記のコマンドを実行。
openssl.exe genrsa -out ..\conf\server.key
こんな感じのレスポンスです。
ファイルが生成されました。
公開KEY の生成
続けて以下のコマンドを実行。
openssl.exe req -new -key ..\conf\server.key -out ..\conf\server.csr -config ..\conf\openssl.cnf
証明書要求に組み込まれる情報を入力します。
いわゆる識別名またはDNです。
一部のフィールドにはデフォルト値がありますが、
「 . 」を入力すると、空白のままにすることができます。
C:\Users\Administrator>cd c:\Apache24\bin
c:\Apache24\bin>openssl.exe req -new -key ..\conf\server.key -out ..\conf\server.csr -config ..\conf\openssl.cnf
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
コメント欄をGoogle 翻訳したところによると、、、そういう事らしいです。
聞かれた内容を順番に入力していきます。
Country Name (2 letter code) [AU]:jp
State or Province Name (full name) [Some-State]:gifu
Locality Name (eg, city) []:city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:company
Organizational Unit Name (eg, section) []:section
Common Name (e.g. server FQDN or YOUR name) []:zapping.beccou.com
Email Address []:info@beccou.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
c:\Apache24\bin>
以下の様にファイルが生成されていました。
証明書の生成
続けてコマンドを実行。
最後の「-days 365」は証明書の期限を示しているようです。
openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt -req -signkey ..\conf\server.key -days 365
さっき入力した情報ですね。
この時点でApache を再起動すれば、SSL が有効になっているはずです。
SSL 接続の確認。
https でlocalhost に接続。
キタ。
まあ、SSL接続はできるようになったと思われる。
これは自己署名なんでSSL 通信はするものの、相手からは「誰だよ?」って事で信用してもらえてません。
相手側に「ああ、確かにbeccou.com だね。」って言ってもらうには、それなりの機関に申請して、自身の管理するドメインである事を証明してもらう必要があります。
mod_socache_shmcb について。
実は、最初「手順 1-1」で「mod_socache_shmcb」モジュールを有効化していませんでした。
それで最初、Apache 再起動も起動せず、、、という状況でした。
なんでかなーって思ってログをみたところ、mod_socache_shmcb モジュールが要るんじゃないの? 的なことが書かれているのを発見したので、
言われるがままにモジュールを追加しました。
ここでやっと、Apache 起動を確認。
という、経緯で手順1にこのモジュールの有効化も追加しています。
あと、Apache モニターにOpenSSL の文字が追加になっていますね。
OPEN 大好き。
参考サイト
Windows+ApacheでSSLを有効にする方法
http://www.koikikukan.com/archives/2013/12/03-012345.php
OpenSSLを使って自己署名証明書を作成する
https://blogs.osdn.jp/2017/02/06/openssl.html
ピンバック: WordPress のDB を変更する方法の検証。 – .zapping
ピンバック: WEB で公開中のWordPress サイトをローカル環境で再構築する。 – .zapping