STNSが単体でのTLS暗号化&クライアント認証に対応しました
先日STNS,libnss-stnsともに0.2.2をリリースしました。主な変更内容は下記のとおりです。
- TLS暗号化に対応
- TLSを利用したクライアント認証に対応
- retry_requestパラメーターでクライントのリトライ回数を指定可能にした
- 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分くらいでヒント情報もらえたのでホント便利。
その他
先日Qiitaに投稿されたLinuxユーザ管理の決定版? 〜STNSとサーバレスで夢が広がる〜【cloudpack大阪ブログ】の記事がバズっており、嬉しすぎてその日は3人位に缶コーヒーを奢ってしまいました。STNSを活用いただき、ただただ感謝です!こういった事例をみてhttp://stns.jpのドキュメントも拡充しておりますので、どんどんハックしてもらえれば幸いです。