httpsd(SSL Server)と自分の CA を作るっ!!(改定 apache_1.2.6 版)
 1998 年 9 月 15 日現在、apache SSL の最新版は apache_1.3.1+ssl_1.24 で実現出来ています。ただ、apache1.3.? はまだ枯れていないプログラムである事、access.conf 等の設定ファイルが 1.2.6 の頃からずいぶんと変更されている等の緒事情により、今回は、apache_1.2.6+apache_1.2.6+ssl_1.17.tar.gz+SSLeay-0.8.0.tar.gz と言う組合せで apache_SSL サーバを実現してみたいと思います。

 ちなみに私は、「Web ちゃっと(たかのちゃっと)」を SSL で動かしています。多分、ちゃっと業界初の快挙では無いかっ!!と自負しています(^^;V。

 毎回、ブラウザから問いかけがうっとうしいと感じられる方や、「CA の認証書」がどうったモノであるかを知りたい方は、私の作った CA の DER をブラウザに組み込んでみてください。あ、この DER は httpsd の向こう側にあります(^^;;。 http://www.running-dog.net/CA/RunDogCA.der

 今回は、

日本ベリサインに「ベリサイン・セキュア・サーバ ID」をもらう
自分で CA を立てる場合

と、二つの方法に付いて記述します。当然、apache_SSL インストール、SSLeay のインストール方法に付いても取り上げて見たいと思います。

 と、言う事で早速必要となるファイルを持って来ましょう。

1.apache1.2.6 を拾ってきます。 →  apache_1.2.6.tar.gz
2.apache1.2.6 を SSL 仕様にするパッチを拾ってきます。 →  apache_1.2.6+ssl_1.17.tar.gz
3. 認証に利用するSSLeay を拾ってきます。 →  SSLeay-0.8.0.tar.gz

・SLeay-0.8.0 のコンパイル
 以上で準備は整いました。では早速コンパイルに掛かりましょう。まず最初は、SSLeay-0.8.0.tar.gz のコンパイルを行い、SSL に対するコマンド群を作製します。詳細に付いては、同梱の INSTALL ファイルを見てコンパイルしてください。

----------------
# cd /usr/local/src
# tar xvzfp SSLeay-0.8.0.tar.gz                  
# cd SSLeay-0.8.0
# perl util/perlpath.pl /usr/local/bin		*1
# perl util/ssldir.pl /usr/local/ssl		*2
# make -f Makefile.ssl links
# ./Configure FreeBSD
# make clean
# make depend;make      	
# make rehash                                   *3 
# make test                                     *4
# make install
# 
----------------
*1. Configure 等を実行する為に perl スクリプトの path を変更します。
*2. SSL を格納するディレクトリを作成します。
*3. サンプルの Certsification ファイルの作成を行います。
*4. SSL が正しく make 出来たかの確認を行います。

 一応、これで SSL はインストールされました。インストール先は /usr/local/ssl です。

 尚、余談ですが、solaris-x86-gcc で make した場合、もしかしたら x509 の make の所で止まってしまうかもしれません。as が失敗するでしょう。原因は Solaris{2.6,2.5.1} for x86 のアセンブラにあるみたいです。そー言う時は、GNU の製品である binutils-2.9.tar.gz をインストールしてあげると無事に通る様になります。

・apache_SSL のインストール
 さて、次は apache1.2.6 をコンパイルしましょう。これは、SSL 用のパッチを当ててから make します。

----------------
# cd /usr/local
# tar apache_1.2.6.tar.gz
# cd apache_1.2.6
# mkdir apache_SSL
# cd apache_SSL
# cp ~/apache_1.2.6+ssl_1.17.tar.gz ./apache_SSL
# tar xvzfp apache_1.2.6+ssl_1.17.tar.gz 
# cd ../
# tar cvzfp src_ORG.tgz ./src			*1 必要であれば backup を。
# cat apache_SSL/SSLpatch | patch
# cd src
# cp /usr/local/src/apache_1.2.6/apache_SSL/src/* ./
# mule Configuration                            *2
# ./Configure
# make
# 
----------------
*1. 必要であれば src ディレクトリのバックアップを取ってください。
*2. apache の Configuration を自分の好みに合わせてカスタマイズします。後、SSL のパッチを当てた時、SSL のディレクトリが間違っているので以下の様に修正します。一応、sample はこちらになります。モジュールもいろいろと組み込んでいます。
----------------
SSL_BASE=/usr/local/ssl
SSL_INCLUDE= -I$(SSL_BASE)/include
SSL_CFLAGS= -DAPACHE_SSL $(SSL_INCLUDE)
SSL_LIB_DIR= $(SSL_BASE)/lib
SSL_LIBS= -L$(SSL_LIB_DIR) -lssl -lcrypto
SSL_APP_DIR= $(SSL_BASE)/apps
----------------
 これで make が正常終了すれば src のディレクトリ内に httpsd と言うファイルが出来ます。これが SSL 用の httpd です。これを適当なディレクトリにコピーして環境を作りましょう。

 もし、コンパイル出来ない場合は、以下のパッチを当ててください。CACHE_SESSIONS を FALSE にしないと多分 httpsd が立ち上がらないと思います。httpsd でのキャッシュ機能のようですが、FALSE で問題無いと思われます。もしどうしても使いたい様でしたら、/usr/local/src/apache_1.2.6/apache_SSL/src に入っているので、/usr/local/src/apache_1.2.6/src に cp してください。

----------------
*** apache_ssl.c        Wed Aug  5 15:41:53 1998
--- apache_ssl.c.ORG    Tue Aug  4 17:21:03 1998
***************
*** 88,97 ****
  
  #if SSLEAY_VERSION_NUMBER >= 0x0800
  /* Do session caching - only available with SSLeay 0.8.x */
- /*
  # define CACHE_SESSIONS               TRUE
- */
- # define CACHE_SESSIONS               FALSE
  #endif
  
  /* define this true when SSLeay can do an SSL_free without falling over */
--- 88,94 ----
----------------
----------------
# cd /usr/local
# ln -s /usr/local/src/apache_1.2.6 /usr/local/apache_SSL
# cd apache_SSL
# cp src/httpsd ./
# cd conf
# cp access.conf-dist access.conf
# cp httpd.conf-dist httpd.conf
# cp srm.conf-dist srm.conf
# cp /usr/local/src/apache_1.2.6/apache_SSL/SSLconf/conf/httpd.conf httpd.conf.SSL
#
----------------
 apache を起動させる為には全部で 4 個のファイルが必要になります。access.conf srm.conf mime.types は普通版 apache のをそのまま使っても結構ですが、httpd.conf は SSL 版のを使います。と、言うか、マージして使った方が良いと思われます。一応、以下が apache_SSL に必要と思われる項目の設定例。
----------------
# SSL Port
Port    443

# Listen:
Listen 443

# SSL SetUP
# Disable SSL. Useful in combination with virtual hosts. Note that SSLEnable is
# now also supported.
#SSLDisable

# Set the path for the global cache server executable.
# If this facility gives you trouble, you can disable it by setting
# CACHE_SESSIONS to FALSE in apache_ssl.c
#SSLCacheServerPath /www/ssl/key

# Set the global cache server port number, or path. If it is a path, a Unix
# domain socket is used. If a number, a TCP socket.
#SSLCacheServerPort /www/ssl_work/gcache_port

# Set the session cache timeout, in seconds (set to 15 for testing, use a
# higher value in real life)
#SSLSessionCacheTimeout 15
#SSLSessionCacheTimeout 30

# Set the CA certificate verification path (must be PEM encoded).
# (in addition to getenv("SSL_CERT_DIR"), I think).
SSLCACertificatePath /www/ssl/key

# Set the CA certificate verification file (must be PEM encoded).
# (in addition to getenv("SSL_CERT_FILE"), I think).
SSLCACertificateFile  /www/ssl/key/CryptoCA-crt.pem

# Point SSLCertificateFile at a PEM encoded certificate.
# If the certificate is encrypted, then you will be prompted for a pass phrase.
# Note that a kill -1 will prompt again.
# A test certificate can be generated with "make certificate".
SSLCertificateFile /www/ssl/key/crypto.pem

# If the key is not combined with the certificate, use this directive to
# point at the key file. If this starts with a '/' it specifies an absolute
# path, otherwise it is relative to the default certificate area. That is, it
# means "/private/".
SSLCertificateKeyFile /www/ssl/key/crypto-himitsu.key

# Set SSLVerifyClient to:
# 0 if no certicate is required
# 1 if the client may present a valid certificate
# 2 if the client must present a valid certificate
# 3 if the client may present a valid certificate but it is not required to
#   have a valid CA
SSLVerifyClient 0
# How deeply to verify before deciding they don't have a valid certificate
SSLVerifyDepth 10

# Translate the client X509 into a Basic authorisation. This means that the
# standard Auth/DBMAuth methods can be used for access control. The user name
# is the "one line" version of the client's X509 certificate. Note that no
# password is obtained from the user. Every entry in the user file needs this
# password: xxj31ZMTZzkVA. See the code for further explanation.
SSLFakeBasicAuth

----------# List the ciphers that the client is permitted to negotiate. See the source
# for a definitive list. For example:
#SSLRequiredCiphers RC4-MD5:RC4-SHA:IDEA-CBC-MD5:DES-CBC3-SHA

# These two can be used per-directory to require or ban ciphers. Note that (at
# least in the current version) Apache-SSL will not attempt to renegotiate if a
# cipher is banned (or not required).
#SSLRequireCipher
#SSLBanCipher

# A home for miscellaneous rubbish generated by SSL. Much of it is duplicated
# in the error log file. Put this somewhere where it cannot be used for symlink
# attacks on a real server (i.e. somewhere where only root can write).
SSLLogFile              /usr/local/apache_SSL/logs/marugoto_ssl_log
------
 と、言う項目を追加しました。これらの設定の説明に付いては、以下の URL を参照してください。 → http://japache.infoscience.co.jp/japanese/manual/mod/directives.html

 起動する時、普通の httpd は port80 を使用しますが、httpsd の場合は port443 を使います。と、言う事は一台の FreeBSD に二つの httpd が立ち上がると言う事ですね。ただ、現在はまだ、鍵を作ってないので多分立ち上がらないでしょう。では次の項目で実際に鍵を作ってみましょう。

・日本ベリサインに資料提出する為の準備
 先にインストールした SSLeay0.8.0 を使います。一応、path に /usr/local/ssl/bin を通してから実際に作業した方がらくちんです。と、言う事で下の順序に従って作っていってみましょう。

 まず、その前に今回必要なモノをリストアップしてみましょう。

・まず、SSL で守るドメイン名(FQDN)。今回は以下の URL にします。 
	httpsd://kuro.running-dog.net/ 
・SSL Server で必要とする 秘密鍵
・ベリサインに提出する書類の一部である CSR
・等々。この他に会社の印鑑証明とか登記簿謄本とかが必要になるでしょう;-)
 尚、以下で打つコマンドはほとんどが /usr/local/ssl に入っているので path に入れておくと幸せになれます。
--- 1. SSL Server で必要とする秘密鍵を生成する
# mkdir -p /www/ssl/key
# cd  /www/ssl/key
# genrsa -des3 -rand /usr/local/bin/mule:/usr/local/bin/tcsh:/bin/sh 1024 > kuro-himitsu.key
1427644 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
...................+++++
..+++++
e is 65537 (0x10001)
Enter PEM pass phrase: パスフレーズそのいちを入力
Verifying password - Enter PEM pass phrase: パスフレーズそのにを入力
# cat kuro-himitsu.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C9D0FD7141999818

5LHVKxAk7n2tHRYyoLlsaf4/nxjhbZDDxd/6S/cgSHAqDemNHwZFwQn4apu3a947
hoIPPOOULi7iE1abZ3pHGfEjWyJgFMzRCsE5B6rn8MAdzLLVA6G0HxQKLlNmEvA0
vjnEtWOvpITXMP68e05o6BKB6DJlPJp+ZOqYbYrQSbNJV+Vm8zGWPfRQeMQVK02N
otG5A3gPr+EQwKVk5XwvDSx4wOfQVRfgjABhKCN5D6j3168lA7Jno92d9/mHWMvv
f0nVsiQ3BsmKcYz0+HbM79XH8iwvV0vhURfdH2BS7vANJSEbH3CEEaX9G4ojBTg7
HUsdzOnN6XYDqzJ1hYoqUA543jNoH6cbr1gGHWCRJVMwEJkA0n4llhR6G/pwbqSN
dkRuCCwX5t0Ui1p6crW6b8r0nv57iYpzbi9DadBg0DEffiK5DECvLEPFzCdsDI2I
KbNdezAN8M70HQC6lxuf9NXMpsukrwRz6xxTQZ31u7NZGK+D29Woyo7haaDg0rk/
cbRey0953kCtqhuAxhCeaBMafdpraeK7sNLMWy/11I5dzwoShLqAOiW7ga0NkVAr
BXIxkQab2V5mvzVYWB/FQ0dEmBrwCdM1jo1438fpkpvjY1UVZnlAcP4geIf8/iTX
7F1nBGJF8yAwyYmDaFWm/m4rNpbHqanJZtHg3Vyw5nx3jC7FStY4HNOHj0XC7fp2
LsKYu8GpDJTzSS+DhJiXcv/ZGyuUxP5bvFCGbN2j8R+mglczgYIVs2smedpEHeJ3
ZEwiD/psCa7DUaTaeE9fS0UNLRNW+xlqbUtud8vJ5zmTiZuo/jZpOA==
-----END RSA PRIVATE KEY-----
#
----------------
 と、言う事で、SSL Server の秘密鍵が出来ました。ふふふ(^^)。こんな感じです。で、genrsa コマンドの -rand のオプションですが、乱数を取る為に大きいバイナリファイルを 5 個位指定してちょ。って書いてありました。ふみふみ。

 で、これで作った秘密鍵は httpsd 起動時、毎回、秘密鍵のパスフレーズを入力しないと起動しません。そんな時は以下のコマンドで、秘密鍵にちょっと手を加える事も可能です。

----------------
# rsa -in kuro-himitsu.key -out kuro-himitsu-nosign.key
read RSA private key
Enter PEM pass phrase: パスフレーズを入力
writing RSA private key
#
----------------
 出来た kuro-himitsu-nosign.key を httpd.conf の SSLCertificateKeyFile に書いても OK です。さ、続いて、ベリサインに提出する書類の一部である、CSR を作成します。先程作成した秘密鍵を利用します。
----------------
# req -new -key kuro-himitsu.key  > kuro.csr
Using configuration from /usr/local/ssl/lib/ssleay.cnf
Enter PEM pass phrase:
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.
-----
Country Name (2 letter code) [AU]:JP			国を入力
State or Province Name (full name) [Some-State]:Tokyo	県名を入力
Locality Name (eg, city) []:Shinjuku			市町村を入力
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Running-dog Network	会社を入力
Organizational Unit Name (eg, section) []:Kuro SSL Server	会社名、その他を入力
Common Name (eg, YOUR name) []:kuro.running-dog.net	FQDN サーバ名を入力
Email Address []:takachan@running-dog.net		管理者を入力

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#
----------------
さささ、これで出来上がった、kuro.csr(証明書)をベリサインに送って、署名してもらいましょう。ベリサンインにサインをしてもらった CSR、は、通称、署名付き証明書と言う様で、既に認証局(ベリサインの事)にサインしてもらってあるので httpd.conf に記述しましょう。

SSLCertificateFile   /www/ssl/key/kuro.pem

 今は kuro.epm と言う名ですが、本当はどういった名前なんでしょうねぇ。私は貧乏人なのでとてもじゃ有りませんが日本ベリサインにはサインしてもらえません・・(^^;;

 さて、これとは別に、日本ベリサンは多分、「認証局の証明書」なるものを発行してくれるか、もしくはダウンロード出来る URL を持っていると思います。そこに行って CA の証明書なるモノを取得しましょう。そして、httpd.conf の以下の設定に記述します。何度もいいますが、私はベリサインにサインをしてもらった事は無いの出正式なファイル名を知りません。今回は、CA-crt.pem と言う名にしておきます。

SSSLCACertificateFile  /www/ssl/key/CA-crt.pem

 更に、先程作った秘密鍵を httpd.conf の以下の設定に記述します。

SSLCertificateKeyFile /var/www/ssl/key/kuro-himitsu-nosign.key

これら三行は必須になりますので、これを記述したら準備は完了。すかさず起動してみましょう。

----------------
# /usr/local/apache_SSL/httpsd -f /usr/local/apache_SSL/conf/httpd.conf
----------------
・自分で CA を建ててみよう
 まず始めに環境を整える所から始めます。環境変数の path に /usr/local/ssl/bin を設定した後、以下のコマンドを打っていきましょう。
----------------
# cd /usr/local/ssl/
# CA.sh -newca
CA certificate filename (or enter to create)
RunDogCA.conf
#
----------------
コマンドを実行したディレクトリに demoCA と言うディレクトリを作ってくれます。またこの時、CA のキーファイル名を聞いてきますが、ま、失敗しても特に問題は無いです(^^;;。demoCA と言うディレクトリは作れましたか?では次のステップです。

 次に CA の環境設定ファイルを作成して上げます。一応、サンプルは、/usr/local/ssl/lib/ssleay.cnf になりますが、これを適当にカスタマイズしてから、/usr/local/ssl/demoCA に入れて上げましょう。一応、私の CA のコンフィグファイルはこれになります。 → RunDogCA.conf CA の運営方針とかポリシーがあると思うので、思い思いに設定してください;-)。

 続いて、CA の公開鍵/秘密鍵のペアを作ります。以下のコマンドです。

----------------
# req -config ./RunDogCA.conf -x509 -new > certs/RunDogCA-ca-key.pem
Using configuration from ./RunDogCA.conf
Generating a 1024 bit RSA private key
.........+++++
...............+++++
writing new private key to 'private/RunDogCA-homitsu.pem'
Enter PEM pass phrase: パスフレーズそのいちを入力
Verifying password - Enter PEM pass phrase: パスフレーズそのにを入力
-----
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.
-----
Country Name (2 letter code) [JP]: JP			国を入力
State or Province Name (full name) [Some-State]:Tokyo	県名を入力
Locality Name (eg, city) []:Shinjuku			市町村を入力
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Running-dog Network	会社を入力
Organizational Unit Name (eg, section) []:Running-dogCA		会社名、その他を入力
Common Name (eg, YOUR name) []:RunDogCA			CA の名前を入力
Email Address []:takachan@running-dog.net		管理者を入力
#
----------------
 これで、公開鍵/秘密鍵のペアが出来ました。これらの名前と格納ディレクトリは conf ファイルに記述します。注意深く書き込みましょう。

公開鍵 certs/RunDogCA-ca-key.pem
秘密鍵 private/RunDogCA-homitsu.pem

 第一段の段階である、CA の原型が完成しました。メデタシめでたし。続いて次のステップに移りましょう。

・CA の証明書の作成
 、さ、公開鍵/秘密鍵を大切に保管するとともに、続いて、CA の証明書を発行して、自分の CA でその「CA の証明書」に署名して上げましょう;-)。人の証明書に署名する前にまずは自分のに対して署名します。

 まず、第一段階として、「CA の証明書」を作成します。以下の手順になります。

----------------
# req -config ./RunDogCA.conf -new > RunDogCA-ca
Using configuration from ./RunDogCA.conf
Generating a 1024 bit RSA private key
..............................+++++
...................+++++
writing new private key to 'private/RunDogCA-homitsu.pem'
Enter PEM pass phrase: CA のパスフレーズそのいちを入力
Verifying password - Enter PEM pass phrase: CA のパスフレーズそのにを入力
-----
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.
-----
Country Name (2 letter code) [JP]:JP			国を入力
State or Province Name (full name) [Some-State]:Tokyo	県名を入力
Locality Name (eg, city) []:Shinjuku			市町村を入力
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Running-dog Network 	会社を入力
Organizational Unit Name (eg, section) []:Running-dogCA		会社名、その他を入力
Common Name (eg, YOUR name) []:RunDogCA			CA の名前を入力
Email Address []:takachan@running-dog.net		管理者を入力

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#
----------------
これで 「CA の証明書」が出来ました。この、「自分で作った CA の証明書」に対して、「自分で作った CA の証明書に署名」してあげます(^^;;。
----------------
# ca -config ./RunDogCA.conf -in RunDogCA-ca > RunDogCA-ca-cert.pem
Using configuration from ./RunDogCA.conf
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Tokyo'
localityName          :PRINTABLE:'Shinjuku'
organizationName      :PRINTABLE:'Running-dog Network'
organizationalUnitName:PRINTABLE:'Running-dogCA'
commonName            :PRINTABLE:'RunDogCA'
emailAddress          :IA5STRING:'takachan@running-dog.net'
Certificate is to be certified until Sep 16 07:12:28 1999 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
----------------
 さ、これで「認証局の証明書」が完成しました。自分の CA を信用してくれる人々に配る事にしましょう;-)。と、言う事で一般公開します。普通、認証してもらう SSL Server 管理者 は、自分の httpsd の、httpsd.conf に

SSSLCACertificateFile  /www/ssl/key/RunDogCA-ca-cert.pem

 と、言う様な感じで宣言します。これで、SSL Server は起動する様になるでしょう。ふみふみ。順調に進んでいますね。では次のステップに進みましょう;-)。

・SSL Server 証明書に署名をする
 今回は、kuro.running-dog.net と言う FQDN を持つ SSL Server を建てています。その CSR (証明書)に署名するつものですので、すかさず、自分の作った CA で kuro.running-dog.net の SSL Server の証明書に署名してあげましょう。

----------------
# ca -config ./RunDogCA.conf -in ./kuro.csr > ./kuro-ssl.cer
Using configuration from ./RunDogCA.conf
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Tokyo'
localityName          :PRINTABLE:'Shinjuku'
organizationName      :PRINTABLE:'Running-dog Network'
organizationalUnitName:PRINTABLE:'Kuro SSL Server'
commonName            :PRINTABLE:'kuro.running-dog.net'
emailAddress          :IA5STRING:'takachan@running-dog.net'
Certificate is to be certified until Sep 16 07:12:28 1999 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
----------------
 尚、このコマンドを実行してぼこぼこエラーが出ると言う事は、CA の環境が正しく整っていない事を示しています。conf ファイルを正しく設定して、CA の 公開鍵/秘密鍵の作成の所から実行しなおしましょう。

 さて、このコマンドを実行する事により、kuro.running-dog.net の CSR に対してサイン(署名)し、CER がが出来ました。これで、CA のお仕事も無事完了です。ふみふみ。

・最後に 再度 SSL Server の設定
 さささ、CA で二つのファイルに署名しました。その署名したファイルをいよいよ、SSL Server に設定します。管理者は自分の httpsd の、httpsd.conf に

SSSLCACertificateFile  /www/ssl/key/RunDogCA-ca-cert.pem

SSLCertificateFile   /www/ssl/key/kuro.cer

SSLCertificateKeyFile /var/www/ssl/key/kuro-himitsu-nosign.key

 と、言う様な感じで宣言します。上から順に

・CA の署名付き証明書
・SSL Server の証明書(CA の署名入り)
・SSL Server の秘密鍵

 SSL Server のセットアップは完了となります。これで完了になります。後、httpd.conf、srm.conf、access.conf には他にいもいろいろな設定が出来るのですが、SSL に直接関係する所はこれ位(と、これとは別に上の方で書いていますのでそっちを参考にしてください)なので、一切はしょっています。他の設定は自分で頑張ってください。

 さて、CA の方ですが、公開するといろいろな人から「この鍵、サインしてよ。」等とメールが届く様になります;-)。まぁ、お友達感覚は CA として重宝さされる様になる事でしょう。と、言う事で、ブラウザに登録する情報を DER として変換して、Web からダウンロード出来る様にしましょう。

----------------
# x509 -inform pem -outform der < certs/RunDogCA-ca-key.pem > RunDogCA.der
----------------
CA の公開鍵を der 形式で、RunDogCA.der と言うのを作成します。これを CA のサーバからダウンロード出来る様にします。私の場合でしたら、http://www.running-dog.net/CA/RunDogCA.der からダウンロード出来る様にしています。この時、www.running-dog.net の httpd の mime の設定ファイルである mime.types に以下の行を追加してあげましょう。
----------------
application/x-x509-ca-cert      der pem
----------------
・SSL Server その後、と・・。
 ふぅぅ。これで、一連の Apache SSL の設定と、CA の解説のお話しを終りますが、解っていただけたでしょうかねぇ?私もいろいろなドキュメントを読み漁りましたが言葉どどれも一緒でいまいち区別が付いていません・・(^^;;。CSR とか CER とか DER 等、どれも似たような言葉が沢山出て来ます・・。まいりましたねぇぇ。この辺りは皆さんも関係するドキュメントを丁寧に読み漁ってください。

 最後にですが、「日本ベリサイン」等と結構固有名詞を出してしまったりしてしまいましたが、これはだいじょぶなのかな?ごめんなさい。> 日本ベリサインさん(^^;;。ちなみに ベリサインも apache SSL の証明書にもサインしてくれる様になりました。皆さんもどしどし SSL サーバ立てましょう;-)。高いけどね・・;-P。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.