Windows ServerへのApache導入及び自己証明書による暗号化

※本サイトはアフィリエイト広告を利用しています。
広告

ソフトウェアの構成

Windows Server上でWebサーバを構築するために、以下のソフトウェア構成で

項目ソフトウェア名
OSWindows Server 2016の64bit
ミドルウェアVisual Studio 2019 の Microsoft Visual C++
ミドルウェアApacheのバージョン2.4.48
ミドルウェアOpenSSLのバージョン1.1.1

Apacheのインストール及びサービスを起動

Apacheを用いてWebサーバを構築するために、各ソフトウェアをインストールします。

(1) Apacheのインストールための準備として、「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」のインストーラをダウンロードするために、以下のWebサイトにアクセスします。

Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
Visual Studio IDE または VS Code を無料でダウンロードします。 Windows、Mac で Visual Studio Professional または Enterprise エディションをお試しください。


(2) 「その他のツールとフレームワーク」の「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」の「x64」にチェックを付けて、「ダウンロード」をクリックします。
Apacheのインストール(1)

(3) ダウンロードしたインストーラ(VC_redist.x64.exe)を実行して、「実行」をクリックします。
Apacheのインストール(2)

(4) 「インストール」をクリックします。
Apacheのインストール(3)

(5) 「閉じる」をクリックします。
Apacheのインストール(4)

(6) Apacheのインストーラをダウンロードするために、以下のWebサイトにアクセスします。

Apache VS17 binaries and modules download
For (business) webmasters, developers and home-users who want running always up to date Windows VS17 binaries and modules


(7) 「Apache 2.4.48 Win64」のインストーラをダウンロードするために「httpd-2.4.48-win64-VS16.zip」をクリックします。
Apacheのインストール(5)

(8) ダウンロードしたファイルを展開して、その中にある「Apache24」をCドライブ直下に移動します。

(9) コマンドプロンプトを起動して、Apacheをインストールするために以下のコマンドを実行します。

cd "C:\Apache24\bin"
httpd.exe -k install


(10) 「C:\Apache24\bin」フォルダの中にある「ApacheMonitor」を実行します。
Apacheのインストール(6)

(11) 右下に表示されている「ApacheMonitor」のアイコンを右クリックで選択して、「Open Apache Monitor」をクリックします。
Apacheのインストール(7)

(12) 「Apache Monitor」の画面にて、「Start」をクリックします。
Apacheのインストール(8)

(13) 「The Apache2.4 service has started」というメッセージが表示されていることを確認します。
Apacheのインストール(9)

(14) ブラウザを起動して、「http://127.0.0.1/」にアクセスすると、「It works!」という文字が表示されていることを確認します。
Apacheのインストール(10)

補足:「C:\Apache24\htdocs」フォルダの中にある「index.html」の内容がWebページとして表示されています。
Apacheのインストール(11)

opensslコマンドの設定

通信を暗号化するための自己証明書を作成するための準備として、opensslコマンドを使用できるように準備します。

(1) opensslコマンドをダウンロードするために、以下のWebサイトにアクセスします。

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions


(2) 「Win64 OpenSSL v1.1.1k」の「MSI」をクリックします。
opensslコマンドの設定(1)

(3) ダウンロードした「Win64OpenSSL-1_1_1k.msi」を実行します。
opensslコマンドの設定(2)

(4) 「I accept the agreement」にチェックを付けて、「Next」をクリックします。
opensslコマンドの設定(3)

(5) インストールディレクトリはそのままにして、「Next」をクリックします。
opensslコマンドの設定(4)

(6) 「Next」をクリックします。
opensslコマンドの設定(5)

(7) 「The OpenSSL binaries (/bin) directory」にチェックを付けて、「Next」をクリックします。
opensslコマンドの設定(6)

(8) 「Install」をクリックします。
opensslコマンドの設定(7)

(9) 寄付する金額を選択して、「Finish」をクリックします。今回は寄付しないため、全てのチェックを外して、「Finish」をクリックします。
opensslコマンドの設定(8)

(10) 以下の手順(16)でパスを設定するために、インストールディレクトリの場所(openssl.exeがある場所)を確認します。インストールディレクトリがデフォルトままの場合は「C:\Program Files\OpenSSL-Win64\bin」がインストールディレクトリになっています。
opensslコマンドの設定(9)

(11) コントロールパネルを起動します。その後、表示方法を「小さいアイコン」に変更して、「システム」をクリックします。
opensslコマンドの設定(10)

(12) 「コンピュータ名、ドメインおよびワークグループの設定」の「設定の変更」をクリックします。
opensslコマンドの設定(11)

(13) 「詳細設定」タブの「環境変数」をクリックします。
opensslコマンドの設定(12)

(14) 「Path」をクリックして、「編集」をクリックします。
opensslコマンドの設定(13)

(15) 「新規」をクリックします。
opensslコマンドの設定(14)

(16) OpenSSLのインストールディレクトリ(C:\Program Files\OpenSSL-Win64\bin)を入力して、「OK」をクリックします。
opensslコマンドの設定(15)

自己証明書の作成およびApacheの設定

Webサーバへの通信を暗号化(https)にするために、自己証明書などを作成して、Apacheを設定する手順を記載します。

(1) コマンドプロンプトを起動します。

(2) 以下のコマンドを実行して、「秘密鍵」を作成します。コマンド実行後、パスフレーズを入力します。

openssl genrsa -aes128 2048 > server.key


(3) 以下のコマンドを実行して、「公開鍵」を作成します。

openssl req -new -key server.key > server.csr

※コマンド実行後、公開鍵の設定情報として以下の項目を設定します。
Country Name (2 letter code) [AU]:               ←国名。日本の場合は、JP
State or Province Name (full name) [Some-State]:       ←都道府県名。
Locality Name (eg, city) []:                  ←市町村。
Organization Name (eg, company) [Internet Widgits Pty Ltd]: ←組織名
Organizational Unit Name (eg, section) []:          ←部門名
Common Name (e.g. server FQDN or YOUR name) []:       ←コモンネーム。
Email Address []:                        ←Eメールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                    ←パスワード
An optional company name []:                  ←パスワード


(4) 以下のコマンドを実行して、「オレオレ証明書」を作成します。コマンド実行後、パスフレーズを入力します。

openssl x509 -in server.csr -days 365000 -req -signkey server.key > server.crt


(5) 以下のコマンドを実行して、「秘密鍵」のパスワードを無いようにします。コマンド実行後、パスフレーズを入力します。

openssl rsa -in server.key -out nopass.key


(6) 作成した「server.crt」と「nopass.key」を「C:\Apache24\conf\ssl」にコピーします。

(7) 「C:\Apache24\conf」の中にある「httpd.conf」の以下の行をコメントアウトします。

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf


(8) 「C:\Apache24\conf\extra」の中にある「httpd-ssl.conf」の以下の行を変更します。

ServerName 【WebサーバのFQDN又はIPアドレス】:443
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/nopass.key"


(9) 設定ファイルにエラーがないか確認するために、以下のコマンドを実行します。コマンドの出力結果が「Syntax OK」であることを確認します

C:\Apache24\bin\httpd.exe -w -t -f "C:\Apache24\conf\httpd.conf" -d "C:\Apache24\."

クライアント証明書のインポート

自己証明書にて通信を暗号化する場合、クライアント側にクライアント証明書をインポートしていないと、以下のような警告画面が表示されます。
自己証明書の画面

(1) Webサーバにアクセスするクライアントに「公開鍵(server.crt)」をコピーします。

(2) 「server.crt」を実行します。
クライアント証明書のインポート(1)

(3) 「ローカル コンピューター」にチェックを付けて、「次へ」をクリックします。
クライアント証明書のインポート(3)

(4) 「証明書をすべての次のストアに配置する」にチェックを付けて、証明書ストアに「信頼されたルート証明機関」を選択します。その後、「次へ」をクリックします。
クライアント証明書のインポート(4)

(5) 「完了」をクリックします。
クライアント証明書のインポート(5)

(6) 「OK」をクリックします。
クライアント証明書のインポート(6)