STNSが単体でのTLS暗号化&クライアント認証に対応しました

先日STNS,libnss-stnsともに0.2.2をリリースしました。主な変更内容は下記のとおりです。

  1. TLS暗号化に対応
  2. TLSを利用したクライアント認証に対応
  3. retry_requestパラメーターでクライントのリトライ回数を指定可能にした
  4. ubuntu14.04における再起動が完了しない不具合を修正

TLS関連

これまではnginxなどと組み合わせてTLS/SSL暗号化を提供していましたが、@naoto_gohkoさんからissueを頂いたのと、昨今みんな出来るだけサーバ立てたくないんだろうなぁというフォースを感じたので、単体でTLS暗号化に対応し、サーバ、クライアント共にパラメータを追加しています。

tls_ca   = "keys/ca.pem"      # using only client authentication
tls_cert = "keys/server.crt"
tls_key  = "keys/server.key"

クライアント、サーバいずれもパラメーターの内容は一緒ですが、サーバのtls_ca及び、クライアントのTLS関連のパラメーターについてはクライアント認証を行うときだけ指定してください。

TLS暗号化だけを利用する場合

  • stns.conf
tls_cert = "keys/server.crt"
tls_key  = "keys/server.key"
  • libnss_stns.conf
api_end_point = ["https://example.jp:1104/v2"]

TLSクライアント認証を利用する場合

  • stns.conf
tls_ca   = "keys/ca.pem"
tls_cert = "keys/server.crt"
tls_key  = "keys/server.key"
  • libnss_stns.conf
api_end_point = ["https://example.jp:1104/v2"]
tls_ca   = "keys/ca.pem"
tls_cert = "keys/client.crt"
tls_key  = "keys/client.key"

クライアント認証を利用することでベーシック認証よりも堅牢になるので、グローバルな環境でより安心してSTNSを運用することが可能になります。

retry_requestパラメーターの追加

minneの踏み台サーバにログインできなくなった〜」という声を@hsbtさんから頂いたので調べてみると、STNSサーバに何らかの理由で疎通できなかったときに、nscdがネガティブキャッシュしてしまい、名前解決ができなくなっていました。NWの状況等に応じてはそれなりに起きることなので、クライアント側でリクエストをリトライできるようにしています。request_timeoutと合わせて利用することにより、問い合わせのミスを減らせると思うのでご活用ください。

ubuntu14.04における再起動が完了しない不具合を修正

@manabusakaiさんからフィードバックを頂いて、調査したところ、OS起動時にdbus-daemonが起動した際に、libnss-stnsがロードされて、コマンド実行を行う場合、またOS起動時にinitramfsで起動し、/usr/local/binなどが見えていない状態のときにコマンドを実行しようとすると、プロセスの起動、停止などが正常に動作しない状態になる不具合がありました。
straceで追いかけるとlibc.soに対してdbus-sendが失敗する挙動であったため、OS起動時にlibnss-stnsに対して、動的呼び出しが行われたとしても、以降の処理を行わず無視することで収束しています。普段自分が運用していないOSでの利用実績や、そのフィードバックを頂けて本当に助かりました。

実は本件、原因がわからず、30時間位ハマっていたのですが、I have matsumotoryなので、相談したら5分くらいでヒント情報もらえたのでホント便利。

その他

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-22-22-54-23

先日Qiitaに投稿されたLinuxユーザ管理の決定版? 〜STNSとサーバレスで夢が広がる〜【cloudpack大阪ブログ】の記事がバズっており、嬉しすぎてその日は3人位に缶コーヒーを奢ってしまいました。STNSを活用いただき、ただただ感謝です!こういった事例をみてhttp://stns.jpのドキュメントも拡充しておりますので、どんどんハックしてもらえれば幸いです。