さかにゃ日記 Information(臨時連絡):
現在臨時連絡はありません。 まぁ暇なときでかまわないので、 一度くらいは通常のInformationをご覧ください。
この日記中のamazon.co.jpへのリンクはアソシエイト・プログラムが適用されています。
最近さかにゃ日記経由でAmazonで発注していただいた商品リスト
_
まずはOpenSSLの導入。FreeBSDには標準で導入されているが、 OpenSSH-portableを導入した際に依存関係で portsからもインストールされているのでこいつを使う。 ついでに最新版にしておこう。この時点でのports最新は 0.9.6h .
marino# portupgrade openssl_
自前の認証局をたてる。 とりあえずは /usr/local/openssl あたりに openssl.cnf.sample とゆーのがあるので こいつを元にして openssl.cnf を作成。 いぢった場所は以下の通り。セクション+diff書式。 実際のdiffは このあたりに投棄。
[ CA_default ] < dir = ./demoCA # Where everything is kept > dir = /usr/local/openssl/chinmaiCA # Where everything is kept < default_md = md5 # which md to use. > default_md = sha1 # which md to use. [ req ] > default_md = sha1 [ req_distinguished_name ] < countryName_default = AU > countryName_default = JP < stateOrProvinceName_default = Some-State > stateOrProvinceName_default = Osaka > localityName_default = Osaka-city < 0.organizationName_default = Internet Widgits Pty Ltd > 0.organizationName_default = Chinmai Network Service [ usr_cert ] < # nsCertType = client, email, objsign > nsCertType = client, email, objsign < nsComment = "OpenSSL Generated Certificate" > nsComment = "OpenSSL Generated User Certificate" > keyUsage = nonRepudiation, digitalSignature, keyEncipherment > [ svr_cert ] > basicConstraints=CA:FALSE > nsCertType = server > keyUsage = nonRepudiation, digitalSignature, keyEncipherment > nsComment = "OpenSSL Generated Server Certificate" > subjectKeyIdentifier=hash > authorityKeyIdentifier=keyid,issuer:always_
で、以下のコマンドを叩く。有効期限は3年にしてみた。
marino# pwd /usr/local/openssl marino# mkdir /usr/local/openssl/chinmaiCA/private marino# openssl req -config ./openssl.cnf -new -x509 -newkey rsa:1024 \ ? -keyout chinmaiCA/private/cakey.pem \ ? -out chinmaiCA/cacert.pem -days 1095pass phraseやら各種設定やらを聞いてくるのでてけとーに答えよう。
これでprivate認証局は完了。
_
次にhttpsサーバ公開用の鍵と証明書発行要求を作成する。
marino# pwd /usr/local/openssl marino# openssl req -config ./openssl.cnf -nodes -new -newkey rsa:1024 \ ? -keyout httpsd_key.pem -out httpsd_req.pemここでのpass phraseは空enterで。 よくない気もするけど、まぁkeyのpermissionに気をつければ大丈夫だろう。 違ってたらごめん。 Common NameはhttpsサーバのFQDNと同じにしておかないと、 IEで警告あがるようだ。 A challenge password とか An optional company name とか聞いてくるけど、 空でええと思う。よくなかったらごめん。 生成された鍵はpermissionを変更しておく。
marino# chmod 600 httpsd_key.pem_
で、今作った証明書要求から証明書を作成する。 本来VeriSignとかの証明機関にやってもらうべきなんだろうけど、 今回はさっき作ったちんまいCAで。わしを信用しない人間にはサービス提供しない :D
まずはちんまい証明局の環境整備。 serialとか管理できるように。
marino# pwd /usr/local/openssl/chinmaiCA marino# touch index.txt marino# echo "01" > serial marino# mkdir newcertsちんまい認証局でさっきのhttpsd証明書要求から証明書を作成しよう。
marino# pwd /usr/local/openssl marino# openssl ca -config ./openssl.cnf -extensions svr_cert \ ? -out httpsd_cert.pem -infiles httpsd_req.pemこれでhttps公開用の証明書ができた。 OpenSSLいぢりはここまで。
_
次、Apache2. Apache2系はmod_ssl込みで配布されてるので、有効にしてやればいい。 configure optionに
--enable-ssl --with-ssl=/usr/local/opensslをつけてやるだけ。
んで、ssl.confの編集。 うちはIPv6含めてNameBasedなVirtualHostを運用してる関係で、 httpd.confも合わせて変更しておいた。 まずはhttpd.conf側で
NameVirtualHost *となっていたのを
NameVirtualHost *:80に変更。各VirtualHostタグも全て
<VirtualHost *:80>にしておいた。
それからssl.confの編集。
NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot "/where/to/DocRoot" UserDir secure_html ServerName chinmai.net:443 ServerAdmin webmaster@chinmai.net ErrorLog logs/error_log TransferLog logs/ssl_logこんな感じ。 で、同じVirtualHostタグの中で さっき作った証明書やら秘密鍵やら証明局やらを指定する。
SSLCertificateFile /usr/local/apache2/conf/httpsd.crt SSLCertificateKeyFile /usr/local/apache2/conf/httpsd.key SSLCACertificateFile /usr/local/apache2/conf/chinmai.crthttpsd.crt, httpsd.key はそれぞれさっきの httpsd_cert.pem, httpsd_key.pem へのSymLink. chinmai.crt は最初に作った cacert.pem へのSymLinkにしておく。
これで
marino# /usr/local/apache2/bin/apachectl startsslしたら稼働するはず。はず。はず。
………まぁ、ダメだったらそれから調べよう(ぉ
_ ちなみに
httpsにて参照できるUserDirをhttpのものと違う設定にしてるので、 最初は suexec-userdir との兼ね合いで寒いことになった。ちういだ。
|
|