2004年8月アーカイブ

CMYK->RGB

| コメント(0) | トラックバック(0)

とりあえずメモ

R=255(1-(C(1-K)+K))
G=255(1-(M(1-K)+K))
B=255(1-(Y(1-K)+K))

MacOSXServerでSSL設定

| コメント(0) | トラックバック(0)

MacOSXServer(10.3 Panther)でSSLを使う必要ができたので、設定してみる。情報源は Using mod_ssl on MacOSX をベースにしているけど、若干変えている部分もある。

1)乱数データの作成
  mkdir -p /tmp/keygen
  cd /
  openssl md5 * > /tmp/keygen/rand.dat

2)秘密鍵の作成
  cd /tmp/keygen
  openssl genrsa -des3 -out server.key -rand rand.dat 1024
同じパスフレーズを2回入れる。ここでできたserver.keyが秘密鍵となる。当然だが、ここで入れたパスフレーズを忘れないように。rand.datはこの後の4)で使ってもいいが、同じ乱数データを投入することに意味がないので削除。

3)CSR (Certificate Signing Request)の作成
  openssl req -new -key server.key -out server.csr
2)で指定したパスフレーズを入力すると、CSRを作成するための情報を聞いてくるので質問に答えていく。
  Country Name (2 letter code) [AU]: JP
  State or Province Name (full name) [Some-State]: Kanagawa
  Locality Name (eg, city) []: Yokohama
  Organization Name (eg, company) [Internet Widgits Pty Ltd]: HOGEHOGE Co.,LTD.
  Organizational Unit Name (eg, section) []: SYSTEM ADMINISTRATOR DIVISION
  Common Name (eg, YOUR name) []: www.example.com
  Email Address []: (your e-mail address)postmaster@example.com
VeriSignなどの正式なCAに提出する場合は、当然であるが正しく記入すること。

4)CA用秘密鍵の作成
 3)で作成したCSRをCAに署名してもらう必要があるが、今回はテスト用なので自分がCAとなってCSRに署名する。正式なCAによる署名じゃないのでブラウザから警告が出るが、あくまでもテストということで無視しておく。
  openssl genrsa -des3 -out ca.key 1024
 ここでも2)と同じようにパスフレーズを聞かれるので、CA用のパスフレーズを入れる。当然、このパスフレーズを忘れないこと。これでCAとしての秘密鍵ができる。

5)CA用証明書の作成
 4)で作成したCA用の秘密鍵でCA用証明書を作成する。
  openssl req -new -x509 -days 365 -key ca.key -out ca.crt
 CA用パスフレーズを入力すると、CAとしての情報を聞いてくるので入力する。

6)CSRに署名する
 この時点で、/tmp/keygenディレクトリにはserver.key,server.csr,ca.key,ca.crtの4ファイルができていることを確認する。いよいよCSRに自己署名をするのだが、一番簡単にすませるためにmod_sslのソースに含まれるsign.shというスクリプトを実行する。sign.shのみを取り出してコピーする。
  chmod +x sign.sh
  ./sign.sh server.csr
この時に「Sign the certificate?」と「1 out of 1 certificate requests certified, commit?」と聞かれるので、y[ENTER]と答える。これで署名が完了。

7)作成した証明書のコピー
 作成した証明書をapacheの設定フォルダにコピーする。OSXServerにインストールされているapacheの設定フォルダは/etc/httpd/なので、ここのssl.keyフォルダにコピーする。必要なファイルserver.key,server.crtの2つ。7)以降の作業はrootに移行するかsudoでコマンドを実行する必要がある。

8)server.keyのパスフレーズをなくす
 この作業をしておかないと、apache起動時にパスフレーズの入力待ちとなってしまうため、apache再起動時に問題となる。
  cd /etc/httpd/ssl.key
  mv server.key server.key.original
  openssl rsa -in server.key.original -out server.key
 パスフレーズを聞いてくるので、入力する。「writing RSA key」のメッセージが出ればOK。

9)httpd.confの編集
 apacheの設定ファイルhttpd.confを編集する。その前にapacheを停止しておく。
  apachectl stop
 設定ファイルを書き換える前に、念のためバックアップをとっておくほうがよい。
  cd /etc/httpd/
  cp httpd.conf httpd.conf.backup
 バックアップをとったら、httpd.confを書き換える。書き換えるのは、

 1.Port 80 -> #Port 80
2.#LoadModule ssl_module -> LoadModule ssl_module
3.#AddModule mod_ssl.c -> AddModule mod_ssl.c
4.ServerName の項目をServerName [3)で設定したcommonname]にする
5.<IfModule mod_ssl.c>の項目を上記情報源を参考に書き換える。このサーバのIPアドレスを192.168.0.100と仮定。

<IfModule mod_ssl.c>
# Some MIME-types for downloading Certificates and CRLs
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
# inintial Directives for SSL
SSLProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache dbm:/var/run/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
SSLRandomSeed startup builtin
SSLLog /var/log/httpd/ssl_engine_log
SSLLogLevel info
Listen 80
Listen 443
##
## SSL Virtual Host Context
##
<VirtualHost 192.168.0.100:80>
#Just to keep things sane...
DocumentRoot "/Library/WebServer/Documents"
ServerName www.example.com
ServerAdmin admin@example.com
SSLEngine off
</VirtualHost>
<VirtualHost 192.168.0.100:443>
# General setup for the virtual host
DocumentRoot "/Library/WebServer/Documents"
#ServerName has to match the server you entered into the CSR
ServerName www.example.com
ServerAdmin admin@example.com
ErrorLog /var/log/httpd/error_log
TransferLog /var/log/httpd/access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProtocol all -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
# Path to your certificates and private key
SSLCertificateFile /etc/httpd/ssl.key/server.crt
SSLCertificateKeyFile /etc/httpd/ssl.key/server.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/Library/WebServer/CGI-Executables">
SSLOptions +StdEnvVars
</Directory>
# correction for browsers that don't always handle SSL connections well
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfModule>

終わったら保存する。

10)httpd.confのチェックとapacheの起動
  apachectl configtest
 でhttpd.confのチェックを行う。「Syntax OK」であれば、
  apachectl start
 でapacheを起動する。


とここまでの話で動くはずなのだが、MacOSXServerでは動かない場合がある。
  lsof -i:80
でポート80を使っているプログラムが「webperfca」になっていると動かない。これは"Mac OS X Server Web Performance Cache daemon"(man Webprefcacheで調べられます)がポート80を使っているためにapacheが起動できないため。Webprefcacheを停止してからapacheを起動したら正常に動く。

このアーカイブについて

このページには、2004年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2004年7月です。

次のアーカイブは2004年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。