突然とち狂ってモバイルで Blog 更新だだだという気分になってしまった場合にパスワードが平文で流れるのは気分が悪いので管理画面を SSL にするのこと。でも SSL とかさっぱりなのでやっぱりパクっていいとこどりするいやなやつ > mass
あまりに長くなったので「追記」行き。
前提:
FreeBSD 5.X-CURRENT で Ports から apache2 をインストールしていること。
DocumentRoot とか cgi-bin とかの位置はデフォルトのまま。
# cd /usr/local/etc/apache2/ # mkdir ssl.key ssl.crt
# openssl genrsa -des3 -rand /var/log/httpd-access.log -out ssl.key/server.key 1024 15249751 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus ...............................................++++++ ..........++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for ssl.key/server.key:<てきとーなpassphrase> Verifying - Enter pass phrase for ssl.key/server.key:<もっかいpassphrase>途中で妙なメッセージが出てるけど私は気にしません。
# openssl req -new -key ssl.key/server.key -out server.csr Enter dpass phrase for ssl.key/server.key:<秘密鍵のpassphrase> 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]:[てきとーな都道府県名] Locality Name (eg, city) []:[てきとーな市区町村名] Organization Name (eg, company) [Internet Widgits Pty Ltd]:[てきとーな組織名] ← サイト名とかで良いかも。 Organizational Unit Name (eg, section) []:[てきとーな部署名] ← ネタにつまったら空欄でも可 Common Name (eg, YOUR name) []:[WWWサーバのFQDN] Email Address []:[管理者のメールアドレス] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 入力不要 An optional company name []: ← 入力不要せっかくの自己認証なのでばか正直に答えちゃいけません! ここがあなたのセンスの見せどころなのです!!(なぜだ)
# openssl x509 -req -in server.csr -signkey ssl.key/server.key -out ssl.crt/server.crt -days <証明書有効日数> Signature ok subject=/C=JP/ST=[てきとーな都道府県名]/L=[てきとーな市区町村名]/O=[てきとーな組織名]/OU=[てきとーな部署名] /CN=[WWWサーバのFQDN]/emailAddress=[管理者のメールアドレス] Getting Private key Enter pass phrase for ssl.key/server.key:<秘密鍵のpassphrase> unable to write 'random state'また妙なメッセージが出ていますが、また気にしません。
| CSR | /usr/local/etc/apache2/server.csr |
| サーバ証明書 | /usr/local/etc/apache2/ssl.crt/server.crt |
| 秘密鍵 | /usr/local/etc/apache2/ssl.key/server.key |
# vim ssl.conf ServerName <WWWサーバのFQDN>:443 ServerAdmin <管理者のメールアドレス> SSLCertificateFile /usr/local/etc/apache2/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key → apache2 のデフォルト設定。 鍵、証明書ともこれにあわせると手間が減ります。
# /usr/local/sbin/apachectl startssl Apache/2.0.48 mod_ssl/2.0.48 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide us with the pass phrases. Server www.mass.dnsalias.com:443 (RSA) Enter pass phrase:<秘密鍵のpassphrase> Ok: Pass Phrase Dialog successful.エラー無く起動したなら、ブラウザで https://<WWWサーバのFQDN>/cgi-bin/mt/mt.cgi にアクセスしてみましょう。
AdminCGIPath https://www.mass.dnsalias.com/cgi-bin/mt/これを追加しないと、ログアウトした後のログイン画面が非 SSL 画面になってしまいます。それ以外にも不都合があるかも...
# cd /usr/local/etc/apache2/ssl.key/ # mv server.key server.key.bak # openssl rsa -in server.key.bak -out server.key Enter pass phrase for server.key.bak:<秘密鍵のpassphrase> writing RSA keyこうすると次回以降、パスフレーズなしで起動できます。本当は望ましくないのかも知れませんが...
---- 2004/9/17 追記。
月日の経つのは早いもので、半年などあっと言う間です。この記事を書いた当時はゲームやアニメ三昧でのんべんだらりと日々をすごし、周りからは「いい加減働いてください。」「だめ人間ですね。」「何のために生きているのですか。」「いまならひっそりと死ねますよ。」などと言われながら働き口を探していたような気がなんとなくします。(後半 は恐らく被害妄想)
そのときに作ったサーバ証明書も作成時に指定した 180日という期限がやってきました。このままでも個人的に実害はないのですが、「いちいち出るウインドウがうざってぇんだこんちきしょうめぇ」ということで日付だけ更新しました。
# cd /usr/local/etc/apache2 # openssl x509 -req -in server.csr -signkey ssl.key/server.key -out ssl.crt/server.crt -days 180 # /usr/local/etc/rc.d/apache2.sh restartまた 180日に設定したので、また 180日後に更新する必要があります。(や、しなくてもいいんですが。)
---- 2005/3/16 追記。
また更新すた!!