←前 |  ↑↑Blog |  ↑Category |  ↓Comment |  ↓Trackback |  次→

サーバ証明書の作成


苦労しましたが無事動いているみたいです。

こちらもいつものようにものすごくはまりました。

アップルのPanther Server用のドキュメントページにある「Webテクノロジの管理
だと自らCAをやる場合に対応できないので、いろんなサイトをgoogleであさりつつ
試してみるもどーにもうまくいきません。

ASN1_get_object:header too long とかが出てしまう。

作った証明書がまずいのかと思い、FreeCA さんから証明書を取得して(フリー!!!)
ためしてみたところ、

openssl pkcs12 -in loadcert -out certs.txt -nodes

と -nodes で実施すると一応、エラーが出なくなった。しかし、動かない。
アップルのディスカッションボードにて[SSL]で検索すると素晴らしい情報が。

SSLが稼働せず

HTTPサービスで「パフォーマンスキャッシュ」を有効にしているとどうやらうまく動かないようですよ。

やってみた。動作した!!!
素晴らしい。
さらに、appleから認証局をたてる場合についての情報 まである!!!

以下、上記の情報にもとづいた構築メモ。

1. 作業用のディレクトリを作成する。

必須ではないが、作成した方が良さげな気がするので、

/System/Library/OpenSSL/

の下に作成する。

# mkdir /System/Library/OpenSSL/work
# cd work

2. CA認証局を作成する。
※ここでの作業でdemoCAディレクトリが作成されるので、既にdemoCAがあるディレク
トリでの作業はさけましょう。

「これからCAをつくるんだ」

と思いつつ以下の作業を実行する。(重要)
証明書を発行してもらうサーバ側でも似たようなことをするので、今どっちだっけ?
てなことになりがち。

# /System/Library/OpenSSl/misc/CA.pl -newca

を実行する。

# /System/Library/OpenSSL/misc/CA.pl -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:

のようにパスフレーズを聞かれる。いい感じのものを入力する。
確認でもう一回と入力を促される。
こいつらの入力にはcontrol-uが効くみたいなので、失敗したら全クリアとしてcontrol-uを
使うと便利かもしれない。

-----
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) [Tokyo]: (お住まいのところで問題なし)
Locality Name (eg, city) [Setagaya]: (お住まいのところで問題なし)
Organization Name (eg, company) [xxxx]: (ドメイン名とかでよい)
Organizational Unit Name (eg, section) [xxxx]: (いい感じでつける。ただし後で作るサーバと異なる方が良いみたい)
Common Name (eg, YOUR name) []: (いい感じでつける。)
Email Address [xxx@foo.bar.com]: (有効なメールアドレスがよい。)

場合によるとこの後、以下のものが出てくるが、両方ともリターンでOK。

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

するとdemoCAディレクトリが作成される。


3. サーバのプライベートキーとCSRを作成する。

「今度はサーバ側だ。」と思いつつ、以下のスクリプトを実行する。

# /System/Library/OpenSSL/misc/CA.pl -newreq
Generating a 1024 bit RSA private key
...++++++
.++++++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:	(パスフレーズ。CA用と異なるものを使う。)
Verifying - 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]: (お住まいのところで問題なし)
State or Province Name (full name) [Tokyo]: (お住まいのところで問題なし)
Locality Name (eg, city) [xxxx]: (お住まいのところで問題なし)
Organization Name (eg, company) [xxxx]: (ドメイン名などで問題なし)
Organizational Unit Name (eg, section) [xxxx]: (CAと異なるものにした方が良いみたい)
Common Name (eg, YOUR name) []:	www.foo.bar.com (対象とするサーバのドメイン付きの完全な名前)
Email Address [xxxx@foo.bar.com]: (有効なメールアドレスがよい。)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (リターン)
An optional company name []: (リターン)
Request (and private key) is in newreq.pem

この結果、newreq.pem というファイルに秘密鍵と証明書要求が作成される。

4. 証明書の作成

CAの立場となって、2で作成した証明書要求に応える。

まず、同じディレクトリ上に newreq.pem と demoCA があることを確認する。

# ls
demoCA          newreq.pem

あることを確認したら、次のコマンドを実行して証明書を作成する。

# /System/Library/OpenSSL/misc/CA.pl -signreq

すると、CA用のパスフレーズが要求されるので入力する。

Using configuration from /System/Library/OpenSSL/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:

正しく入力されると証明を必要とする内容が表示される。

Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Jul  3 09:28:18 2004 GMT
            Not After : Jul  3 09:28:18 2005 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Tokyo
            localityName              = xxxx
            organizationName          = xxxx
            organizationalUnitName    = xxxx
            commonName                = www.foo.bar.com
            emailAddress              = xxxx@foo.bar.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
		(省略)
            serial:00

Certificate is to be certified until Jul  3 09:28:18 2005 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
Signed certificate is in newcert.pem

2回確認される場所があるが、問題なければ両方ともyでOK。
これで、newcert.pem という名前で証明書が作成される。

5. ファイルの準備

以下のようにして、ファイルを準備する。同じ名前のファイルが既にある場合は、
バックアップをしておくこと。

# cd /etc/httpd/ssl.crt
# touch server.crt
# touch ca.crt
# cd /etc/httpd/ssl.key
# touch server.key

6. ファイルの指定。

対象とするサイトのセキュリティにおいて、上記で作成した

server.crt を証明書ファイルとして、
server.key をキーファイルとして、
ca.crt をCAファイルとして、

を順に選択し、下記のようにする。



7. 証明書ファイルの編集

証明書ファイルの右の鉛筆を押して内容を編集する。
証明書ファイルに相当するのは、4で作成した newcert.pem であるのでこれをテキストエディタ
等で開き、下の方にある、「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」
までを(これらを含めて)コピーして貼付ける。

8. キーファイルの編集

キーファイルの右の鉛筆を押して内容を編集する。
キーファイルに相当するのは、3で作成した newreq.pem の一部であるので、これをテキスト
エディタ等で開き、上の方ににある
「-----BEGIN RSA PRIVATE KEY-----」から「-----END RSA PRIVATE KEY-----」までを(これら
を含めて)コピーして貼付ける。

9. CAファイルの編集

CAファイルの右の鉛筆を押して内容を編集する。
CAファイルに相当するのは、2で作成したdemoCAの下にあるcacert.pemである。これを
テキストエディタ等で開き、「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」
までを(これらを含めて)コピーして貼付ける。

10. その他SSLのための設定

[一般タブ]
・ドメイン名:3でつけたドメイン付きの完全な名前
・ポート:443

[オプション]
・パフォーマンスキャッシュ:チェックをはずす

[セキュリティ]
・SSL(SecureSocket Layer)を使用する:チェック入れる。当たり前。
・パスフレーズ:サーバ用のパスフレーズを入力する。


以上。

( ・∀・)つ〃∩ ヘェーヘェーヘェー">
投稿時間: 2004年07月03日 (土) at 17:50       
 

←前  |  ↑↑Blog |  ↑Category |  ↑Entry top |  ↑Comment |  次→
←前  |  ↑↑Blog |  ↑Category |  ↑Entry top |  ↑Comment |  次→