Apr 19, 2007

[Linux] Debian Etch で Apache2.2 + SSL

Debian Etch がリリースされたので、Sarge からアップグレードしてみた。 apt の dist-upgrade は少々不安だったので(^^;、クリーンインストールで。 特に何事もなく進んで喜んでいたのだが、Apache2.2 + SSL の設定で思わぬ苦戦をした。 ということで、最終的に上手くいった方法をメモ。

openssl のインストール

example:/# apt-get install openssl
Reading package lists... Done
Building dependency tree... Done
Suggested packages:
  ca-certificates
The following NEW packages will be installed:
  openssl
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1004kB of archives.
After unpacking 2351kB of additional disk space will be used.
Get:1 http://ftp.jp.debian.org etch/main openssl 0.9.8c-4 [1004kB]
Fetched 1004kB in 8s (122kB/s)
Selecting previously deselected package openssl.
(Reading database ... 18787 files and directories currently installed.)
Unpacking openssl (from .../openssl_0.9.8c-4_i386.deb) ...
Creating directory /etc/ssl
Setting up openssl (0.9.8c-4) ...

example:/#

openssl の設定

よしだメモ さんの [linux]Debian etchでSSL に書いてあった通りに /etc/ssl/openssl.cnf を編集。

[usr_cert]セクションのnsCertType=serverのコメントアウトを外す
[v3_ca]セクションのnsCertType=sslCA,emailCAのコメントアウトを外す

証明書の作成

こちらもよしだメモさんのエントリ通りに作業。

example:/# cd /usr/lib/ssl/misc/
example:/usr/lib/ssl/misc# ./CA.sh -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
.............++++++
..................................................................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----

    ...SNIP...

Certificate is to be certified until Apr 17 01:07:26 2010 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated
example:/usr/lib/ssl/misc# openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem
Enter pass phrase for ./demoCA/private/cakey.pem:
writing RSA key
example:/usr/lib/ssl/misc# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt
example:/usr/lib/ssl/misc# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der

証明書を Apache に登録

example:/usr/lib/ssl/misc/demoCA# mkdir /etc/apache2/ssl
example:/usr/lib/ssl/misc/demoCA# cp ./cacert.crt /etc/apache2/ssl
example:/usr/lib/ssl/misc/demoCA# cd private/
example:/usr/lib/ssl/misc/demoCA/private# mkdir /etc/apache2/ssl/private
example:/usr/lib/ssl/misc/demoCA/private# cp ./cakey.pem /etc/apache2/ssl/private/
example:/usr/lib/ssl/misc/demoCA/private# cd /etc/apache2/sites-available
example:/etc/apache2/sites-available# cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz ./
example:/etc/apache2/sites-available# gzip -d ./httpd-ssl.conf.gz
example:/etc/apache2/sites-available# ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/httpd-ssl.conf
example:/etc/apache2/sites-available# vi ./httpd-ssl.conf
で、/etc/apache2/ssl/cacert.crt と /etc/apache2/ssl/private/cakey.pem を httpd-ssl.conf に登録。 ついでに、ServerName やら何やらも設定しておく。

Apache で ssl モジュール有効化
example:/etc/apache2/sites-available# a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

Apache 再起動
example:/etc/apache2/sites-available# apache2ctl -t
Syntax OK
example:/etc/apache2/sites-available# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)...httpd (no pid file) not running
.

ローカルからの接続確認

example:~# openssl s_client -connect localhost:https
CONNECTED(00000003)

    ...SNIP...

---
GET / HTTP/1.0  ← これを入力して \n\n

HTTP/1.1 200 OK
Date: Thu, 19 Apr 2007 14:45:57 GMT
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: Fri, 11 Nov 2005 08:09:59 GMT
ETag: "1508105-65-a5c6e3c0"
Accept-Ranges: bytes
Content-Length: 101
Connection: close
Content-Type: text/html; charset=UTF-8

<html>
<head>
  <meta http-equiv="refresh" content="0; URL=./blog/">
</head>
<body>
</body>
</html>

closed
example:~#

リモートから Web ブラウザで確認

後はリモートから Web ブラウザで https の接続を確認して完了。 たったこれだけで 1 週間以上悩んだ・・・ orz よしだメモ さんに大感謝!!

Posted in Linux | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |