LinuxのApacheでSSL
0pt
CA/証明書の作成
CA.pl は openssl-perl をインストールするとついてくる。
yum install openssl-perl
作業用ディレクトリにコピー
# cp /etc/pki/tls/misc/CA.pl CA.pl
出力ディレクトリを変更する
vi CA.pl
$CATOP="./CA";
同じく
vi /etc/pki/tls/openssl.cnf
[ CA Default ]
dir = "./CA"
perl CA.pl -newca # CAの作成
perl CA.pl -newreq-nodes # 証明書作成。パスフレーズいらない(-newreqでパスフレーズつき)
perl CA.pl -signreq # 署名する
perl CA.pl -pkcs12 # パッケージ化する。IEはこれで生成された newcert.p12 を読み込ませる
証明書作成する場合はCommon Nameが重要(でも暗号化するだけだったらそこまで意味は成さないのかも)
apacheの設定
標準のssl.confの一部を変えればOK。
SSLCertificateFile
->newcert.pem
SSLCertificateKeyFile
->newkey.pem
SSLCACertificateFile
->CA/cacert.pem
ってやるとこんなエラーがでました
(Firefox) SSL received a record that exceeded the maximum permissible length.
(Opera) Opera はサーバーに接続できませんでした。サーバーは、サポートされていない SSL 2 プロトコルを使用している可能性があります。このプロトコルは、保護された通信を行う十分な安全性があると見なされていません。サイトの所有者は、TLS 1.0 以降にアップグレードする必要があります。
解決策
NameVirtualHostにポート指定してないかららしい。たしかに。全VirtualHostファイルを書き換えないといけなかったので大変だった。
NameVirtualHost 11.22.33.44
<VirtualHost 11.22.33.44>
↓
NameVirtualHost *:80
<VirtualHost *:80>
複数ドメイン運用はリバースプロキシを使う
443なVirtualHostが複数あると起動時に警告がでて設定が効かない。mod_rewriteのリバースプロキシで設定してやる
例えばこんなん
<VirtualHost *:443> RewriteEngine On RewriteCond %{HTTP_HOST} ^hoge\.example\.com RewriteRule ^(.*)$ http://hoge.example.com/$1 [L,P] ... </VirtualHost>
参考
http://moca.wide.ad.jp/notes/ca_doc/openssl.html
http://lab.hde.co.jp/2008/08/opensslperlca.html
http://vine-linux.ddo.jp/linux/mail/ca_id.php
http://www.piyosystems.com/kuki/B2060435708/C1887229145/E117...
http://kikuz0u.x0.com/memo/hiki.cgi?%A5%D7%A5%E9%A5%A4%A5%D9...
http://park15.wakwak.com/~unixlife/practical/openssl.html
http://d.hatena.ne.jp/a666666/20090211/1234348004
Apacheクックブックも役に立った
「LinuxのApacheでSSL」について友人に書いてもらう。
コメントはまだありません