adent
書こうと思ってた日にびっくりするほど寝てしまったので適当に書きました。
Let's Encrypt使った話
この記事は OIC ITCreate Club Advent Calendar 2015 16日目(12/16)の記事です。
Let's Encryptにメール送って返ってきたのをしばらく放置していたのですが、
いつの間にかpublicBETAになってて、
やってみると10分くらいで出来たので、
通信を暗号化したいなどの需要には答えてくれるのではないかと思い、書きました。
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto
これだけでapt-getとか勝手に走って、その通りに答えれば証明書が得られるのですが、
それだと記事としてもアレなので、http2にするためのソレなどを書こうかなと。
nginxに1.9.5からhttp2が取り込まれたということで、nginxでhttp2を使用するには1.9.5以上が必要なのですが、
気がつけば1.9.9がリリースされてたりするので、好きな感じのバージョンをインストールして頂ければなと。
ソースからビルドする場合はnginx: downloadなどから好みのバージョンをインストールし、ビルドして下さい。
aptの場合は/etc/apt/sources.list
に
deb http://nginx.org/packages/mainline/debian/ squeeze nginx deb-src http://nginx.org/packages/mainline/debian/ squeeze nginx
とか書いてアレすれば良いんじゃないかなと思います。
デフォルトだと
./letsencrypt-auto certonly --webroot -d ドメイン名 --webroot-path /usr/share/nginx/html
的な感じにしておけば、/etc/letsencrypt/live/ドメイン名/
に
cert.pem chain.pem fullchain.pem privkey.pem
が作成されるので、
/etc/nginx/nginx.conf
に
server { listen 443 ssl http2; server_name ドメイン名; ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem; }
みたいな設定でnginxを再起動すれば一応出来るんじゃないかなと思います。
apacheの場合はデフォルトでプラグインが用意されてるので--apache
などを付ければカンタンだと思います。
また、80か443しか受け付けてくれないので、サーバを止めずに認証ファイルを受け取る場合はwebrootプラグインを使います。
ちなみに無料のためか証明書の有効期間は90日しかないので、90日内に再度証明書を発行しないといけません。
cronでやれば良いので、こういう感じでやれば良いと思います。
おわり
advnt
暇つぶしアセンブラ
今日も誰も書かないので、適当に。
もう半分くらい自分の記事になってきた…
あとだんだん書くネタが無くなってきたこの頃。
この記事は OIC ITCreate Club Advent Calendar 2015 12日目(12/12)の記事です。
セキュリティキャンプ・キャラバンで拝聴した中島さんのアセンブリ読経がとても良かったので、最近の暇つぶしはもっぱらアセンブリ読経になっている。
gccの最適化とかさせてみる遊び。(mainのみ
$ cat code.c #include <stdio.h> int main(){ int n=10; n++; printf("%d",n); return 0; }
適当なCを書く。
とりあえず最適化を無効にしてビルド。
$ gcc -mpreferred-stack-boundary=2 code.c -O0 -o ex $ objdump -d -M intel --no-show-raw-insn ex 0804841d <main>: 804841d: push ebp 804841e: mov ebp,esp 8048420: sub esp,0xc 8048423: mov DWORD PTR [ebp-0x4],0xa 804842a: add DWORD PTR [ebp-0x4],0x1 804842e: mov eax,DWORD PTR [ebp-0x4] 8048431: mov DWORD PTR [esp+0x4],eax 8048435: mov DWORD PTR [esp],0x80484e0 804843c: call 80482f0 <printf@plt> 8048441: mov eax,0x0 8048446: leave 8048447: ret
上のコードの通り、[ebp-0x4]に0xa(10)をmovして、それに0x1をaddしている。
最適化オプションを指定してみる。
$ gcc -mpreferred-stack-boundary=2 code.c -O1 -o ex1 $ objdump -d -M intel --no-show-raw-insn ex1 0804843d <main>: 804843d: sub esp,0xc 8048440: mov DWORD PTR [esp+0x8],0xb 8048448: mov DWORD PTR [esp+0x4],0x8048500 8048450: mov DWORD PTR [esp],0x1 8048457: call 8048330 <__printf_chk@plt> 804845c: mov eax,0x0 8048461: add esp,0xc 8048464: ret
[esp+0x8]に直接0xb(11)をmovしている。
最初の2行とか、eaxに[ebp-0x4]を入れて戻してみたいな処理が削られている。
サイズの最適化オプションを指定してみる。-Os
$ gcc -mpreferred-stack-boundary=2 code.c -Os -o exs $ objdump -d -M intel --no-show-raw-insn exs 08048340 <main>: 8048340: push ebp 8048341: mov ebp,esp 8048343: push 0xb 8048345: push 0x80484e0 804834a: push 0x1 804834c: call 8048330 <__printf_chk@plt> 8048351: xor eax,eax 8048353: leave 8048354: ret
mov処理がpushに変わっている。最後のmovもxorに変わってたりしてて面白い。
適当にコードを書いて、ビルドして、印刷して持ち歩くことによって暇つぶしになる。
advent3
slackにアップされてる画像からGPS情報取得するやつ
この記事は OIC ITCreate Club Advent Calendar 2015 9日目(12/9)の記事です。
slackでアップロードされる画像に位置情報があるのがすごく気になって
いたけれど、誰もつっこまないし、
誰もアドベントカレンダー書かない日だったので、
無理やり何か作ってみました。
暇なのか。暇じゃないです。全然。
slackにアップロードされている画像に位置情報があった場合、Google Mapにピンを立てます。
ピンのアイコンはファイルをアップしたユーザーのslackアイコンで、
ピンに表示されるのはexif情報の時間です。
所属しているslackチームの、web apiのtokenがあれば使えます。
trasla.rbを実行後(実行中)、map.htmlでこんな感じで見れると思います。
GPS情報を公開するのもアレなので内容は適当に編集しています。
jsonをajaxで取得するため、webサーバを立てるなりして下さい。
これで、slackメンバーの活動とかが見れて遊べます。
あとslackはSNSのようにExif情報などは消してくれないので、
閉じた環境ですが、気にする方は一度スマホの設定を良いかもしれません。
余
明日は 紅き衝動