nginxSSL中間証明書を改良してAndroidに対応させたおよそ3週間の間多忙で何もアウトプットできていなかったくりすです。nginxのSSL証明書をAndroid上で信頼されないという報告を受けていたのですが、先程対応が完了したのでシェア。Inc.であるわけですが、この両者の中間証明書をインストールしないと、一部の端末では証明書が正しく使用できませんでした。暗号強度上の理由から廃止されており、それに伴い諸CA証明書も2048bitに順次入れ替わっております。これに伴い互換性確保のために中間証明書のインストールが必須となるので、これを正しく設置していない場合SSLエラーが発生するわけです。気を付けないといけないのは、RapidSSLの場合はRapidSSLの中間証明書と、その上位のGeoTrustの中間証明書の両方が必要であるということです。GeoTrustの中間証明書をそれぞれ入手します。参考文献の3番目のテキストファイルは、この2つの証明書がバンドルになったものなので、それを引っ張ってくればよいでしょう。https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt自分のサーバ用の証明書とこれらを連結します。/path/to/your/ssl/cert.pemnginxを再起動します。4.0.3で正常に読み込まれたことを確認しましたので、一安心。NISTの文書によると、今年の末までに1024bitのRSAは廃止され、2048bitに移行するものとされています。(0)2つめのTracをホストしてみました大学や仕事のこと、私的なことなどといったプライベートなあれこれもチケット管理しようといった考えから、公開用であるこのTracプロジェクトとは別に、認証もかけて自分専用のプロジェクトをホストしようと思いました。同じホスト(同じサーバ)で2つのTracをホストした理由は、単にSSL証明書を節約するためです。例によって、任意のパスにTrac用のディレクトリを作成し、Trac化します。詳細は以前の投稿を参照のほど。/privateを設定し、パスを変える方法は失敗でした。いうと、Tracにprivateというハンドラがないからです。それから、uwsgiのSocketポートを変えただけでも、同様にだめでした。そんなにたくさん試行錯誤はしていません。使うやつなのでポート番号くらい非defaultでもいいだろということで、別のポートでlistenすることにしました。}}uwsgi_passのSocketポート番号は、ほかに走っているuwsgiアプリケーションと違うのに気をつけてください。同じだと破滅が起こります。このconfをsites-enabledにシンボリックリンク張って、uwsgiとnginxを再起動して完了。(0)nginxとuwsgiを使ってTracをホストしようこのTracをセットアップするのに多くの時間を費やし、文献を読みあさったのでここに手順やハマりどころをまとめておきます。そこらの文献というのはなぜかコマンドをどの権限やパスで実行するか明記していないケースがあるので、この記事ではコマンドの説明をするときはbashっぽくプロンプトの部分から記述します。12.04.2)以降、ホスト名はreimuと表します(このホストがreimu.x86-64.jpだから)必要なものをパッケージマネージャなり公式サイトなりから引っ張ってきます。わたしはaptを使って手を抜きました。依存環境などもまるまる降ってくるし、アップデートの適用もシステムと一緒にできるという恩恵にあずかれます。trac-gittrac-gitはTracでgit使いたいから入れておいたもので、必須ではありません。Uwsgi?わたしはWebサイトごとにユーザを作るスタイルを採用しているので、Trac用にユーザを作っちゃいます。tracnginxが走るグループは、環境によってはwww-dataではないかもしれません(httpdとか)ユーザ分けとかどうでもいい場合はwww-dataさんが参照できるディレクトリを用意するだけで大丈夫です。Tracのプロジェクトが入るディレクトリを適当に作り、Tracに付属しているTrac-admin?コマンドでそのディレクトリをTrac化します。Trac用のユーザを作らなかった場合はwww-data)で行います。initenvinitenvを行っているときに、プロジェクトの名称とデータベースファイルのパスを決められます。これがTracのタイトルとして反映されます。このTracなら真剣な悪ふざけになっています。UTF-8なら2バイト文字でもいいみたいです。このへんでTracの管理者アカウントを登録しておきましょう。TRAC_ADMINこれで、ユーザfooが管理者になりましたので、fooとしてhttp-auth-basic(以下Basic認証と記述)でログインできるように設定します(後述)。Tracについての、uwsgi用とnginx用のconfigを作ります。}}uwsgi用のconfで書いたソケットはportが7777なので、こちらのconfでもuwsgi_passを7777に設定しておきます。このようにして、nginxにアクセスがあったとき、uwsgiを通してTracのコンテンツを引っ張りにいく設定にします。ちなみにこのTracはSSL-enabledなので、ところどころSSLに関する設定が入っています。htpasswdを使って、Basic認証に使うアカウントを生成します。/path/to/your/.htpasswdこれによってユーザfooが含まれる.htpasswdが生成されたので、このユーザでログインすることでTracのWebインタフェースからの管理ができるようになりました。個人的にはここでroot以外が.htpasswdを読めるのがきもい。上で書いたconfigをenableします。/etc/uwsgi/apps-enabled/trac.xmluwsgiとnginxをrestartして完成。restartああそういえば:エラーが発生したときは、結構な確率でパーミッションがおかしいです。Tracを運用するにあたってwww-dataが読み書きできなくてはいけないファイルは、your_trac_project/conf/trac.iniyour_trac_project/db/trac.dbが大事です。これらのファイルについてwww-dataがrとwの権限を持っているかチェックしましょう。それからハマりどころとして、uwsgiの設定にてPythonのプラグインを使うことを明記しないとちゃんと動かなかったのでメモ。なんか抜けがある気がするので暇な時に検証します。athttp://trac.edgewall.org/。