投稿

ラベル(SSL)が付いた投稿を表示しています

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

apacheでSSL利用時の再起動

SSLを利用している場合 自前でサーバを立てて、SSLの認証取って、利用できるようにしている。 標準的な設定方法に従って作業すれば、設定は難しくない。 例えば、以下のような方法で簡単に設定できる。 (読んで分からない人には、簡単ではないと思うけど・・・) https://jp.globalsign.com/support/server/03.html ところが、この方法だと、apacheを再起動する際に、 秘密鍵のパスフレーズを要求される。(上記サイトにもうっすら書いてあるww) まあ、起動しっぱなしで運用することがほとんどだとは思うけれど、パスフレーズを忘れると、起動できなくなる。 また、スクリプトを通して、再起動やらが実行できない。 コンソールで作業しても、パスフレーズを入力する時間(5秒程度だとは思うけれど)は、apacheが完全に停止した状態になってしまう。 ということで、SSLを有効にしたまま、再起動を自動で行いたい。 設定していない場合 環境はcentOS6.5+apache2です。 例えば、再起動を行うとこんなようなメッセージが表示され、パスフレーズの入力を促されます。 正しく入力すれば、無事起動。 # service httpd restart httpd を停止中:                                            [  OK  ] httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server myservername:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.                                                            [  OK  ]

apacheのSSL設定(マルチドメイン時)

本来の目的は… 仕事の関係でteamで作業を行う予定があり、グループウェアを入れようか、どうしようかと迷っていた時に、ownCloudが良さそうに感じた。 そこで、apt-getでちょろっと入れてみたら、結構いい感じなのでいくつかテストして、実運用にと思ったけれど、仕事で使うんだし、暗号化しておく必要はあるわなぁと…いうことで、SSLの設定をしようとしてハマったのでメモメモ…。 現在の環境 vpsを借りていて、ディスクには余裕があるし、常時動いているので共有場所には最適なのですよ。 WEB関係としては、apache2+BINDで運用。 ドメイン1:aaa.info(主ドメイン) ドメイン2:bbb.jp(別ドメイン) ここまでは、問題なく動作している。 ownCloudをapt-getで入れたら5.0系だったので、本家の6.0系を入れることに。 PC用のクライアントは無料だけど、モバイルのクライアントアプリは100円なのよね〜。実際使ってみると、Dropboxより融通が効いて、とってもいい感じですなぁ。 容量は自分で決められるし…。WebDAVでもアクセスできるし、カレンダーもあったりして…。 設定作業1 apacheのモジュールを調べると、ssl関連がちゃんとあるので、簡単じゃんと思ってやってみる。 # a2enmod ssl これで、mods-avaiableにあるssl関連が、mods-enable配下にリンクされ、機能するようになる…はずだった。 # service apache2 restart エラーは出ないが、httpsでaaa.infoに接続してみると、エラーが返ってくる。 アクセスログを見ると www.abc.info:443 xxx.yyy.zzz.aaa - - [06/Jun/2014:10:22:03 +0900] "\x16\x03\x01" 501 297 "-" "-" いままでに、見たことのないエラーが出ている…。 httpでのアクセスは問題ないことから、SSL関係の設定ということは分かる。 エラーログを見ると [Fri Jun 06 10:22:0

brewでerrorが出た…

イメージ
テキストブラウザを使おうと思って… そもそも、変更したサイトを確認する意味で、テキストブラウザを使おうとしていた。 いつもならLinux上で操作するのだけれど、VirtualBoxを起動するのが面倒なんて思い、Mac上でも動いたはずとかすかな記憶を頼りに動かそうとした。 iTermを開き、 $ w3m www.********.com と。 すると、入っていないよ、というので入れた方が早いなと思いインストールすることにした。 $ brew update fatal: unable to access 'https://github.com/mxcl/homebrew/': SSL certificate problem: Invalid certificate chain Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master まずは、updateをしようと思ったら、いきなりエラー吐いてますやん。 操作手順を間違えたのかと、思い、確認してみる。 $ brew home http://brew.sh/index_ja.html を確認するが、特に問題はない。 最下行の「さらに詳しいドキュメント」からgithubのwikiを見ようとすると、証明書の警告が表示されて、開くことができない。 先のエラーもgithubだったし…。 う〜む、最近gitを見に行っていないので、仕様が変わったのか?証明書のエラーっぽいし…。 何だか、おかしい感じ。 こんな画面は、これまでに見たことがない。 アドレスバーから、情報を見てみると、図のような証明書に関してエラーを吐いている。 念のため、Firefoxでも確認してみたが、同様に開くことはできない。 つまり、マシン(ネットワーク的な)の問題っぽい。 以前は、見ることができていたし、この所納品までは環境を変えたくなかったので、新しいソフトは入れていないので、考えられるのはアップデートくらいか…。 ググってみる これは、他でも起きているに違いないと思ってググってみたら、すでに解決策まで提示されていた。

SSL自己署名証明書の作成

イメージ
マルチドメインを管理していて これまで1台のサーバ(仮想も含め)で1ドメインの管理をこれまで行ってきた。 今回、複数のドメインを1台で管理した方が良い案件だったので、設定することにした。 webサーバはapache2のvirtual設定でOK。 IPは一つだけで、名前ごとに異なるコンテンツを返す。 メールはpostfix+dovecotで、virtual mailboxで管理することに。 ftpは、chrootして、各ユーザのhome以下のweb用ディレクトリに配置。 ここまでは、別に難しくはない。 テストでは、Thunderbirdを利用していたのが、トラブルを見つけにくくしていた。 Thunderbirdは、知らないSSL証明書を受け取った場合、例外として処理するかどうかを自分で設定できる。 僕が設定してテストしている時に、例外指定をしたため、以後警告も何も言わずに送受信ができていた。 ところが、WindowsLiveやOutlook/OutlookExpressは、起動時に確認され、OKしても再度メーラーを起動すると、再び警告が出てくる。 WindowsLiveだと「接続しているサーバーは、確認できないセキュリティ証明書を使用しています。」って、ええやんか〜。 問題はSSLだった オレオレ証明書(自己署名証明書)の使い方と、設定の計画にあった。 デフォルトでは、勝手に証明書を作ってくれて、それを使えば基本的には問題ない。 (というか、これまで問題になったことはない) ただし、先にも書いたように1マシン=1ドメインの場合だ。 ホスト名でCN名を埋め込んで証明書を作るため、マルチドメインの場合の処理が厄介だった。 今回はvpsを借りているので、デフォルトでは借りたvpsによる名前のホストで作ってくれている。 そこで、通常通りSSLを使用して、設定してみると…。 う〜む。 メーラーのサーバ設定を、オリジナルのドメインにしたり、仮想ドメインにしたり、IPにしたりしてみたがダメ。 サーバから証明書を持ってきて、登録するが上手くいかない。 あれこれやっているうちに、vpsがデフォルトで付けてくれたマシン名だとSSLで警告

さくらサーバでLynxが…

イメージ
自動化するのにPerlを検討 ある案件で、あるサイトのフォームへ手入力しているものを、自動化するという処理を構築することに。 当初、メールでデータを流しこみ、Perlで解析し、POSTする方法を検討。 ところが、何度もページを遷移したあとで入力フォームにたどり着くのだけれど、SSLなページが、LWPではどうも上手くいかない。 まあWebブラウザを作るのと同じような内容になってしまうので、面倒すぎる。 どうもHiddenでデータ渡しているし、セッションを使っているのでCookieまわりの処理とかがダメっぽい。ひょっとするとReferer等も見ている感じ ふ〜む、そうだ! WWW::Mechanizeを使おうと考えた。データを作るのに手入力はやっていられないので、HTTP::RecorderでProxyさせて、記録することに。 でもSSL通すと記録してくれない…。 はぁ…。 テキストブラウザLynxが使えないレベル ならば、いっその事テキストブラウザを制御する方向で検討。 メールで受けて、解析し、テキストブラウザをスクリプトで動作させる。 スクリプトには解析した内容から、フォームに入力させるようにPerlで生成する。 よし。これならOKそう。 まずは手元のUbuntu上で簡単な動作確認を行う。 Lynxには、マニュアルに載っていないコマンドラインオプションがあって、 $ lynx -cmd_log ファイル名 とすると、操作を記録してくれる。 この記録されたファイルを編集してやれば思い通りに動かせるはず。 実行するには、 $ lynx -cmd_script ファイル名 でOKだ。 実際には、 lynx -cmd_script log.txt -accept_all_cookies URL なんて指示してやる。 どうやら、日本語もちょっとうまく処理してやるとフォームに流し込めることが判明。 SSLもモジュールさえ入っていれば動作するのを確認。 本番環境の調査 お客さんの借りているのが「さくらのレンタルサーバ スタンダード」。契約内容からSSHがOK。Lynxも入っている。PerlもOK。 ここまでは、事前の調査で分かっているので、最

Crypt::SSLeayが入らない

Perlでの作業中 ちょっとスクリプトからWebページをゲロってこようと思い、LWP::UserAgentなどを使って、取得していた。 ちょっとhttpsあたりも必要に迫られ、getしようとしたらエラーを吐いてくる。 ふむふむ。 ぐぐってみると、Crypt::SSLeayを入れろとな。 ちうことで、 $ sudo perl -MCPAN -e shell で、CPANから入れることに。 cpan[1]> install Crypt::SSLeay 通常は、これでOKなはずなのに…。エラー吐いてくれます。 でもなぁ、CPANから自動で入れているのにmakeで転けられても…。 でも、昔の出来事を思い出してテストして見ることに。 「接続を拒否されました」というメッセージが気になる。 Linuxの初期に良くあったのだけれど、これってLANG=Cでないと動かないんじゃ? ちゅうことで、再度やり直してみる。 英語モードで再度実行! 一旦、抜けてcpanの起動から。 $ LANG=C sudo perl -MCPAN -e shell 表示はもともと英語だし、何も問題ないはず。 同様に、Crypt::SSLeayを入れてみる。 全てのテストに合格して、無事インストール完了!! やはりな!って感じです。 はっ!! インストールが目的ではなかった…。 さて、SSLが使えるようになっているはずなので、テストする。 500 Can't verify SSL peers without knowning which Certificate Authorities to trust orz... SSL証明書と一致しないらしい…。 もうひと踏ん張り。 SSL 証明書のエラー時の対応  どうやら、良く発生するようで…。あちこちに対応策が書かれていた。 [Perl] LWP::UserAgent で SSL 証明書のエラーへの対応 の記述がわかり易かった。 ホスト名の検証をしない CAを明示する いやいや、1はまずいんでは?という思うので、2の方針で。 Mozilla::CAを入れれば良さそう。 さっそく、cpanでMozilla::CAをイン