‘Apache2’ タグが付けられた記事
Redmine や Subversion を動かしている 自社サーバ(Vine Linux 5) に SSL通信 を導入した時の作業メモです。
外部向け(このサイト)のWebサーバはホスティングを使っているので、自社サーバの Apache2 は これら Redmine と Subversion だけのために動かしています。
準備
OpenSSL は通常インストールで入っていました。
ただ、Apache2 が標準では SSL に対応していないので、mod_ssl をインストールします。
# apt-get install mod_ssl
証明書の作成
まず、秘密鍵を作成する。
# cd /usr/share/ssl/certs # make server.key (パスフレーズ入力)×2回
秘密鍵からパスフレーズを削除する。
# openssl rsa -in server.key -out server.key
公開鍵を作成する。
# make server.csr
Country Name | JP |
---|---|
State or Province Name | Kumamoto |
Locality Name | Kumamoto |
Organization Name | IT Produce Kumamoto |
Organization Unit Name | IT |
Common Name | (サーバのURL) |
EMail Address | (管理者のメールアドレス) |
A challenge password | なし |
An optional company name | なし |
認証書を作成する。有効期限は1年にしておく。
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
Apache2 の設定ファイルを書き換える
/etc/apache2/conf/httpd.conf を書き換えます。
(略) # Dynamic Shared Object (DSO) Surpport (略 : LoadModule が並んでいる後に追加すると分かりやすい) LoadModule ssl_module modules/mod_ssl.so
(/etc/apache2/conf/httpd.conf に書いてもいいのですが)SSL関連の記述は、/etc/apache2/conf.d/ssl.conf に書きます。
<IfModule mod_ssl.c> NameVirtualHost *:443 Listen 443 <VirtualHost *:443> ServerAdmin noboru@itpk.jp DocumentRoot /var/www/html/ SSLEngine on SSLCertificateFile /usr/share/ssl/certs/server.crt SSLCertificateKeyFile /usr/share/ssl/certs/server.key <Files ~ "\.(cgi|shtml)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown </VirtualHost> </IfModule>
接続確認
ブラウザで今回設定したサーバにアクセスしてみます。この時に必ずURLを、”https://…”とすること(そうしないと、SSL接続の確認になりません)。
すると、図のような画面が表示されるはずです(ブラウザによって多少は異なる)。
今回使用した証明書は、自分で作って発行したものだからです。
ところで、SSL通信の役割は2つあります。
1つは通信を暗号化することにより安全性を高めること。
もう1つは、通信相手が信頼できる相手だと保証することです。
ただ、今回の使用目的の場合は、通信の暗号化だけが目的です。アクセスするのは社員だけなので(自社サーバーであることは確実なので)信頼はしてもらえる、という前提で作っています。
これが仮に、不特定多数の人が機密性の高いデータをやり取りするようなサービスである場合(ショッピングサイトなど)は、きちんとした認証局に間に入って貰う必要があります。
そんなこんなで、このサイトに関しては信頼することにして、接続することにします。
「危険性を理解した上で接続するには」の中の「例外を追加…」ボタンを押します。
しばらく(証明書を取得している間は待つことになる)すると「不正な証明書です」など、散々な書かれ方をされますが、今回は信頼できるサイトなので(「表示」ボタンを押せば先程作った証明書であることが分かります)、「セキュリティ例外を承認」を押します。
この時、「次回以降にもこの例外を適用する」にチェックを入れておけば、次回からはこの辺のやりとりはなくなります。