Let's Encrypt + Nginx の導入

Posted over 8 years ago by yoosee.
  ssl nginx security letsencrypt

Update: この記事中のやり方は古くなっているので2017年7月現在は以下の記事を参考。 Let’s encrypt の証明書を certbot を使って更新する - W3er

このブログをSSL化するにあたって Let’s Encrypt - Free SSL/TLS Certificates の証明書を導入しているのでその備忘録。Let’s Encrypt は最近のブラウザであれば標準で利用できる証明書(ドメイン認証:DV)を無料で発行してくれる。現在 Public Beta の状態だが、登録すれば誰でも利用が可能だし、Valid な Cert が提供されている。

SSL in blog.yoosee.net

登録後に必要なツールを持ってきてセットアップする。下記を実施したのは 2016-03-09 だが、去年12月にやった時と少しやり方が変わっている気がするので、実施時にはドキュメントや –help などを見てやったほうがいいかもしれない。

% git clone https://github.com/letsencrypt/letsencrypt
% cd letsencrypt
% ./letsencrypt-auto 

Debianであれば必要なパッケージがインストールされる(当然内部で sudo が求められている)。libssl-dev などが入るので予め apt で入れておくといいかも。letsencrypt 自体は何も指定しなければ ~/.local の下にインストールされるようだ。

SSL Cert の作成は、Apache であれば設定ファイルの変更まで勝手にやってくれるらしいが、Nginx 対応はまだのようなので certonly --standalone オプションで Cert の作成のみを行う。

% sudo ~/.local/share/letsencrypt/bin/letsencrypt certonly --standalone -d blog.yoosee.net
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.yoosee.net/fullchain.pem. Your cert will
expire on 2016-06-07. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If like Let's Encrypt, please consider supporting our work by:

上記の通り、中間証明書を merge した fullchain が /etc/letsencrypt/live/blog.yoosee.net/fullchain.pem に生成される。有効期限は生成日より約3ヶ月といささか短いので、Let’s Encrypt でも cron などで更新を自動化することを推奨している。例えば下記のような cron を仕込んでおくと /etc/letsencrypt/live/blog.yoosee.net.conf に自動生成されている設定ファイルに従って renew をかけてくれるようだ。

0 4 1 * * /home/yoosee/.local/share/letsencrypt/bin/letsencrypt renew

Nginx の SSL 関係の設定はこんな感じ。上記コマンドは Certificate Key も /etc/letsencrypt/live/blog.yoosee.net/privkey.pem に作っているのでそれを指定する。

server {
        listen 443; # listen for ipv4
        server_name blog.yoosee.net;
#...
        ssl on;
        ssl_certificate /etc/letsencrypt/live/blog.yoosee.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.yoosee.net/privkey.pem;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
#...
}

上記ではついでに Diffie-Hellman key exchange のパラメータも作成して指定している。これをやっておかないと Key Exchange の強度で Cipher DHE 関連で微妙にディスられたのだが、ちゃんと設定すると SSL Server Test: blog.yoosee.net (Powered by Qualys SSL Labs) でも今のところ A 判定をもらっている。

% sudo openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem

過去に仕事でやった商用Certの導入や更新に比べたらものすごく簡単で素晴らしいことである。

 

Taskerは2016年現在もまだまだ現役で便利で手放せないという話

Posted over 8 years ago by yoosee.
  android tasker

以前のブログでTaskerを紹介したのはもう5年以上前のことだが、2016年現在も全くもって現役でTaskerを使っている。Android も以前よりだいぶましになったとはいえ、自動化で楽ができるタスクはまだ少なくない。これのおかげで日常生活で味わうであろうスマホを使う細々とした苦痛が幾つも回避されている。素晴らしいことだ。

Tasker

最近だとTasker系と呼ばれるアプリも色々とあるし、Taskerで実現していた機能をAndroid自身が実装していたり、単体アプリとして同等の機能を簡単使えるように提供しているものもある。またFTTTのように外部サービスとの連携を主眼としたものもあり、Taskerだけが選択肢という訳ではではなくなった。とは言え別にTaskerにできることが減ったわけでもないので未だに全く手放せない。使い方に関しては下記のあたりが参考先になるだろう。

Tasker Profile Example

例えば最近愛用しているこんな設定がある。スマホが車載スピーカーに接続された時点でPodcastのプレイリスト自動再生が始まり、その後にWaze (カーナビSNS)が起動するプロファイルだ。

  • トリガー:Bluetoothが車載のBtスピーカーに接続される
  • タスク:
    1. Wi-Fiをオフ
    2. Podcast Addictを起動
    3. 5秒のウェイト
    4. Podcast Addict に Playlist 再生の Intent を送信
    5. 14秒のウェイト
    6. Wazeを起動
    7. Media Volumeを13に設定

これは本当に便利で、車に乗ってスマホをワイヤレス充電Qi搭載のホルダーに載せ(Taskerとは関係がないが車載時の充電もこれだけだ)、エンジンをかければBluetoothスピーカーがスマホに接続されて自動的にPodcast再生とカーナビ起動が行われる。スマホの操作的にはほぼ完全自動、ゼロタッチである。

最近のAndroidは過去にTaskerを使って自動化していたようなこと、例えば「夜間は通知音・LEDをOFF」「電話着信時に裏返すと着信音をOFF」「イヤホンプラグを抜くと音声再生を一時停止」「カレンダーでミーティング時間内は通知音をオフ」「外部からの命令で端末の位置情報を送信」「特定環境下で自動的にアンロック」などが標準で実装されるようになったが(そう、以前からこういうことはTaskerを使えばできたのです)、まだ以下の辺りが現役のProfileである。

  • 自宅Wi-FiのSSID接続時に画面輝度をAutoから特定輝度へ変更
  • オフィスWi-FiのSSID接続時に画面輝度をAutoから特定輝度へ変更、Mediaボリュームをゼロにする
  • Bluetooth Headset接続時にScenesでPodcastAddictとPowerAmpの選択起動ダイアログを表示
  • Youtubeなどの音量が必要な特定アプリの利用時のみMedia Volumeを一定値に上げる
  • Photosなどの特定アプリの利用時のみScreen Rotationを有効化
  • 子供向けゲーム起動時にタイムアウトを長くしMedia Volumeを上げ、Gravity ScreenやSwipe Padなどを停止する
  • スマホを前後に数度振ることでLEDライトを点灯・消灯

なおこの辺りは実際は Extended Variables & States - Tasker Wiki で環境変数を使ってStateの管理をしている。大変個人的な定義としてはTaskerの習熟度をこんな感じで考えている。

  • 初心者: State変更などでシンプルな設定変更などができる
  • 初級者: 複数処理の連結などである程度複雑なProfileを作成できる
  • 中級者: 環境変数を使った状態管理や複数Profile間の競合解決などができる
  • 上級者: 上記に加えてIntentの呼び出しやSceneを使ったUI拡張を活用できる

特に意味のある分類ではないが、上級の辺りまで使いこなすと色々と楽しいので是非チャレンジして欲しい。

 

DSTって実際のところどんな感じなのか

Posted over 8 years ago by yoosee.
  dst life uslife

早いもので今年も3月13日からDSTが開始した。DSTはDaylight saving timeの略で、日本だと夏時間 / Summar Time と言ったりするものだが、そもそも近年では3月の第2日曜日には始まり11月第1日曜日まで続く米国でのそれを「夏」と呼ぶのは違和感があるし、こちらではDSTで表すのが普通だ。DSTが始まる日曜日の夜1時59分の次の時間が3時になり、1時間時計が進む。逆にDSTが終わると1時59分が1時に戻る。

Daylight saving time - Wikipedia, the free encyclopedia

実際のところDSTはどうなのか、経済的や健康的には賛否両論あるようだが、個人的にも痛し痒しである。

DSTが始まると朝が暗くなり夜が明るくなる。実際DSTが開始する3月の日の出時間はこの辺りでは開始前が6:30am、開始後は1時間ずれるので7:30amになり、朝起きた時点がかなり暗い。逆に日没は6:30pmだったのが7:30pmになる。これが夏の間、7-9月くらいだと朝は7時前でも十分外も明るいし、空が暗くなるのは夜9時くらいになるので単純に日中が増えた感じになる。仕事さえ終われば(…)その後にテニスをしたりレストランの屋外席で食事をしたりと、感覚的には夕方が長くなって楽しめる時間が増える感じになる。

例えばこれは去年5月22日の午後8時の写真だが、外が十分明るいのがわかると思う。この頃はIngressをしていたので外が明るいのは特にありがたかった。

DSTでの5月の屋外

一方でDSTが無い日本とはDSTの有無で時差が変わってしまう。米国は国内に大きく Eastern, Central, Mountain, Pacific の4つのタイムゾーンがあり、今いる所は米国東海岸のEastern Timeと呼ばれる地域で、通常 -0500 、DSTでは -0400 のタイムゾーンになる。日本との時差に直すと通常は14時間、DSTで13時間の時差だ。この1時間は結構大きな違いで、端的には日本と打ち合わせをする時に日本時間朝9時の打ち合わせが通常では夜7時、DSTが始まってしまうと夜8時と1時間遅くなってしまうのである。

この辺の事情は米国内でも西に行くほどさほど問題にならなくなるのだが(カリフォルニアのPTであれば日本朝9時はまだ夕方の4時ないし5時である)、ETで日本と仕事をする身としては結構切実である。まして最初に書いたように、今では1年のうち8/12ヶ月がDSTなので、むしろDSTでない間がボーナス期間みたいになってしまっているのだった。

そんな個人的な事情はともかくとして単純に「DSTってどうか」と聞かれれば、夜の時間も明るいのは結構楽しいので好きではあるのだが。

 

最近よく聴いているお勧めポッドキャスト

Posted over 8 years ago by yoosee.
  podcast

リハビリ中なので軽めのネタとして、最近レギュラーで聴いているポッドキャストをお勧めとして幾つか紹介。主に英語のもの。
Podcast

少し前に Facebook で @yomoyomo さんが 人気ポッドキャスト50選 に絡めて「みんなどんなPodcastを聴いてる?」的な質問を投げていたのだけど回答したのが私くらいしかいなかったという事があった。あれですか皆さんPodcastとか聴いてないのか。私も本格的に聴くようになったのはIngressを半引退した去年暮れ前後からなのだけど、最近は通勤時や夕方の散歩の時にPodcastを聴くのが定番になってきたのでそれなりに日常的に聴いていて購読リストも少し収束してきた。ちなみに普段は Android の Podcast Addict で聴いてます。

ところでこう並べると英語技術系ポッドキャストがないのだが、Android, Linux, Security, StartUp 等いくつか聴いているけどしっくり来るのが無い。お勧めがあれば教えて下さい。

Radiolab

かなり有名なPodcastであり米国ではラジオ放送もされている。Scientific Topic と言っているが実際にはいわゆる自然科学よりは広範囲な話題を扱っていて、最近は社会系の話が多い。米国のPodcastはラジオ放送にも連携して予算が取れるからか作りがプロフェッショナル、つまりはBGMや効果音を入れたり会話のオーバーラップを作ったりインタビューを入れたりと凝っているので聴いていて飽きないのもいい。大変面白く、更新頻度は低めで1ヶ月に2本くらいで長さも30分から1時間くらいなのでリストに入れておいても負担にならないと思う。

Planet Money : NPR

Moneyとなっているが特別投資ネタではなく、経済全般のバラエティ豊かな話題がテーマ。古いブランドのお菓子を復活させた起業家の話とか今の大統領選で誰がどんな経済政策を話しているかとか(結論は「まあみんな人気取りでリップサービスばかりよね」なのだけど)、軽めの話を15-20分程度の短い時間で流してくれるので聴きやすいし、基本的に解説口調なので英語も分かりやすい。更新頻度は結構多くて週に1,2回程度。

Serial

The American Life からのスピンオフらしいが、報道の1トピックを1シーズンとして10エピソード以上に渡って展開する。これもプロの報道番組ばりに、と言うか実際にこれはプロの報道番組なのだが、演出や内容が非常に凝っている。ただトピックが米国を中心とした事件だったり戦争だったりするので興味のあるなしは別れるだろう。しばらく前にシーズン2が始まった。凄い面白い…

TED Radio Hour : NPR

言わずと知れたTED関係で、TEDは本家のYoutubeを含めてオンライン露出は大量にあるのだけど、このポッドキャストは毎回なにかしらのテーマに沿ったTED Talkを4,5話くらいピックアップし、トークの一部を切り出してヘッドラインとして解説してくれる。これがかなり聴きやすい。大量にあるTEDからつまみ食いで内容の切り出しまでしてくれるので、気分的にはTED用のTumblrという感じ。週1度更新で1時間弱と少し長め。

Tested - Still Untitled

今シーズンで終了する MythBusters(邦題:怪しい伝説)のメインキャストの1人である Adam のポッドキャスト。内容は Adam と他のレギューラー及びゲストの雑談という感じだが、彼の話なのでMakeネタや特撮・Sci-Fi・ハリウッドウラ話などなど、更に時事ネタも入っていて面白い。怪しい伝説で Adam の語り口調が好きな人にはもちろん向いてると思う。週1回の更新で30分くらい。

BBC World Service - The Science Hour

サイエンス系のPodcastはかなり大量にあるのだけど、物理や宇宙方面を含めてトレンドになっている自然科学分野の話題を広く扱うという意味では今のところこのポッドキャストがいい感じだ。BBC提供ということもあって英語も聞き取りやすい。最近の重力場発見の話題なんかもそれなりにタイムリーに語ってくれた。当然ながら科学英語に全く馴染みがないと少し大変かもしれないが、それなりに平坦な表現はしてくれているとは思う。週1度の更新で50分程度。

日本語のPodcastはあまり数を聴いていなくてこれくらい。

Rebuild - Podcast by Tatsuhiko Miyagawa

言わずと知れた Rebuild.fm 。Web技術系やゲーム業界あたりの最新ネタを拾えて面白い。あまりに繰り返されるのでシュタインズゲートを見るはめになったりとかElixirで遊んでみたりとか個人的にも影響力は計り知れない。米国エンジニアの働き方が結構話題になるんだけど、米国で管理職をそこそこ長いことやっている身で聞くとたまにモニョっとなることがある。そういう話にはニーズがあるみたいなのでこのブログでもそのうち書き起こしてみようと思ってる。さておき。個人的にはHiroshimaさん(@n)登場の回をまいど楽しみに聴いてる。

mhatta’s podcast – オサレな時事の話題を洗練された語り口で

去年暮れくらいから? 頻繁に更新されるようになったmhatta先生のポッドキャスト。内容はなんというか基本バカ話なので数話聴いてみて合う合わないはあると思う。

バイリンガルニュース (Bilingual News)

日本語と英語で時事のニュースを伝えるバイリンガルニュース。語り口が軽快で聴きやすいけど1本が1時間半から2時間とちょっと長いのでレギュラーではなくて、他のストックが無い時に差し込む感じで聴いている。

 

ブログツール textfi について

Posted over 8 years ago by yoosee.
  textfi rails

Rails 今回ブログを再開するにあたってブログツールを書き起こした。もちろん2016年の現在において新しくブログ用のプログラムを書く必要など全くなく世にあるサービスを使えばいいのだが、それはそれ、ブログが趣味ならブログツールも趣味である。

そんなわけでこの数週間、空き時間にちまちま Rails を書き進めていた。Rails と言うのはよく言われるように Rails のお作法に沿って書いている分には結構快適に形ができていくのだが、それは逆に言えばなにかやろうと思ったら Rails のお作法をひとつひとつ調べる必要があるということでもある。そういうわけで「画像のアップロードがしたい」と思えばググり、「タグを付けたい」と思えばググり、多分コードを書いている時間よりも何かを調べている時間の方がだいぶ長かったと思う。

それでも一応いまのところこれくらいは実装できたのでまあよしとする。

  • Markdown による記事の記載 (Redcarpet)
  • Markdown 内コードの色つけ (Albino)
  • 画像の Drag & Drop アップロード (PaperClip + Dropzone)
  • タグ付け (act-as-taggable-on, bootstrap-tagsinput)
  • Pagination (will_paginate, bootstrap-will_paginate)

サーバは Rails + Unicorn + Nginx の構成。Let’s Encrypt で SSL を設定。一応複数のブログ管理やユーザ管理もあるものの、まだ個人で使うものを脱していないのでそこをどうするかは少し悩ましい。UIの修正や足りていない機能もまだまだあるので趣味としてボチボチいじろうと思う。

なお Trackback はもちろん今更実装していないし、コメントも Facebook Comment Plugin の埋め込みにしていて、コメント機能を認証ありにするのはそのつもりなのだけど、認証つきコメント欄機能として Facebook はちょっと out of date な感がある一方で代替案が思い当たらない。

ところで一番苦労したのは Google Custom Search を Bootstrap の navbar に収めることだった。今もまだ割とアドホックである。なんでこんなにまでCSSカスタマイズの固まりなんだ…