HTTPS for AWS ELB(Elastic Load Balancer)

Introduction 本記事はHZ Colloquium Advent Calendar 2014の12/11分の記事です。 前回記事(Welcome to WebAPI World)の続きとなります。 前回までのあらすじ WebAPIを作ってみたくて色々調べてみたよってところまでは話した。が、実装まではたどりつけませんでした。 せっかくのWebAPIだからロードバランサで可用性担保しつつ、SSLなセキュアAPIを実現!という夢を語りました。 本日のお話 「せっかく」のところを実現してみました。ロードバランサとSSL通信のことです。 具体的にはAWSのロードバランササービス「ELB(Elastic Load Balancer)」の設定と クライアントからのHTTPS通信でのアクセスの実現です。結構ウェブ上に情報はあったので それほど苦労もなく実現できてしまいました。 なお、下記サイトに書いてあることとほぼ同じことをやった感じ。 全て網羅されてまとめられていて大変感謝です。 * AWSのELBにSSLを設定する(Nginx) おしながき PayPalへの登録(おまけ) SSL証明書の購入手続き ELBの設定(SSL証明書の導入) ドメインとELBの紐づけ PayPalへの登録 SSL証明書の購入に必要だった+初体験ってこともあったので登録してみました。 完璧には仕組みがわかってなかったんですけども、簡単に使えてます。 サービス利点としては、各ネット店舗での購入の際に毎回クレジットカード番号を 入れないといけないのを、一度PayPalにクレジット情報を登録しておけば、 PayPalとネット店舗間でお金のやり取りをやってくれるってところ。 初め理解ができなかったのは、上記以外にも「送金」ができるってところ。 日本の中では銀行以外が送金業務できないので実質は初めに行ったサービスだけ 使えるんだけど、法改正とかあるらしくて近く「送金」できるようになるみたい。 まぁネット上の銀行口座にクレジットから振り込みできるってことかな。 ちなみに、登録にはほぼ迷うことなく完了。 SSL証明書の購入手続き メールアドレスの準備 SSL証明書を購入する際は、正しいドメインの所有者か確認するため(?)に ドメイン名のメールアドレスにメールが送られてくる。 admin@codelogue.com とかを用意する(SSL証明書購入時に いくつか選択肢がでてくるので、それを確認してから作成でもよい) なお、独自ドメインで無料メールアドレスを持とうとすると、意外と狭き道だった。 (運よく昔作ったGoogle Appsのアカウントが有効だったため助かった) CSRの作成 AWSのELBに証明書を登録するためにはパスフレーズなしにする必要がある。 # 秘密鍵の作成(パスフレーズは適当に) openssl genrsa -des3 -out aws-elb.key.pem 2048 # 秘密鍵からパスフレーズを削除 openssl rsa -in aws-elb.

Welcom to WebAPI World

Introduction 本記事はHZ Colloquium Advent Calendar 2014の12/5分の記事です。 今日は過激に適当な話も入れながら WebAPI について書いていく。 なお、お仕事で課題を見事に解決できず、明日死亡フラグがたっているなかでの執筆なため 全体的にテンションはおかしめ。 Atom + middleman にて配信中。やっと静的サイトジェネレータの良さがわかってきたころあい。 Welcome to WebAPI World  これを書きながら Web2.0, Mashup などの言葉を思い出す(だいぶ昔の話なのか)。 それらを構成する要素にWebAPIってやつもあった。API (Application Programming Interface)です。 Webの技術をベースにしたAPIです。Webの技術ってなんでしょうか。それはHTTP(HTTPS)やURIのことです。 プロトコルのことです。 ここで思考をもっていってほしくない方向は「HTML = Web」って考え方です。Webページとかの延長線上の話としては 捉えないほうがよいと思います。いったん忘れましょう。 WebAPIといってもいくつか宗教があります。SOAP, WSDL, REST, RESTfulなどがそれです。 今はREST, RESTfulが全盛です。SOAPやWSDLは仕様が複雑すぎてはやらなかったらしいです。 このあたりの歴史は「Webを支える技術」に書いてます。Web関係のエンジニアはあれを読むべき。 「Web」の捉え方が少し変わるから。 REST(ful) WebAPIとは REST(REpresentation State Transfer)の略です。アーキテクチャ(設計方法?設計原則?ととらえればよいのか) の名前です。RESTな方針に沿って設計されているシステムをRESTfulなシステムというらしい。 RESTを極めたものの証なのです。下記はRESTの特徴です。4つ書きます。もう少しあった気もします。 リソース 以下は全てリソースです。 * 大阪の天気 * 俺の明日の予定 * 飲み会の写真 リソースの識別子 全てのリソースは1つ以上の識別子を持ちます。「大阪の天気」だとこうなる。なるほど、識別子とか小難しいが RESTではURIでの指定になるんですね。 http://weather.yahoo.co.jp/weather/jp/27/6200.html ちなみに1つ以上と書いたのは、上記は以下のURIでも同様だから(以下は仮ね)。つまり、同じ情報でも 捉え方は複数あるよということ。そのためにリソース自体が複数識別子で参照されることがありえる。 http://weather.yahoo.co.jp/weather/today/osaka.html どうですか?なんだかセマンティックな話ですよね。セマンティックウェブ!です。ちょっと違うけどそそるでしょ?

Middleman to Amazon S3

AWS にデプロイ用ユーザを作成 IAM(Identity and Access Management)でTravis CIからのデプロイ用ユーザ作成 デプロイ用ユーザにAmazon S3更新権限を付与(Attach User PolicyからAmazon S3 Full Access) Amazon S3 にバケツ(公開用フォルダ)作成 Amazon S3にバケツを作成。PropertiesからStatic Website HostingをEnable website hostingにする。 Index Documentにindex.htmlを指定 Travis CI の設定 AWSデプロイ用ユーザ作成時のAccess Key IDを暗号化 # travis encrypt -r tsujimitsu/codelogue *********** Please add the following to your .travis.yml file: secure: "**********" 同じ要領でSecret Access Keyも暗号化(-rの後ろはgithubのリポジトリを指定) travis encrypt -r tsujimitsu/codelogue ********** Please add the following to your .travis.yml file: secure: "**********" travis.

lightline.vim

itchyny/lightline.vim lightline.vim - A light and configurable statusline/tabline for Vim VIMのステータスラインを機能拡張してくれるプラグイン。ファイル名や文字コードが表示されており、一目でわかるようになります。また、現在のモード(insert, view等)が視覚的に色で区別されるためinsertモードで操作したことによる誤入力を防止できそうです。 とりあえず、これを使っていると傍からはできる人に見えます(想定)

Active Directory Light Weight Directory Service

参考文献 AD LDS http://technet.microsoft.com/ja-jp/library/cc732019(v=ws.10).aspx AD LDSの概要 http://technet.microsoft.com/ja-jp/library/cc733064(v=ws.10).aspx AD LDS インスタンスとは http://technet.microsoft.com/ja-jp/library/cc770698(v=ws.10).aspx AD LDS スキーマとは http://technet.microsoft.com/ja-jp/library/cc753882(v=ws.10).aspx AD LDS レプリケーションおよび構成セットとは http://technet.microsoft.com/ja-jp/library/cc770465(v=ws.10).aspx 新しいAD LDSインスタンスの作成 http://technet.microsoft.com/ja-jp/library/cc731687(v=ws.10).aspx 既存のAD LDSインスタンスのレプリカを作成する http://technet.microsoft.com/ja-jp/library/cc725829(v=ws.10).aspx LDIF ファイルからデータをインポートする http://technet.microsoft.com/ja-jp/library/cc771986(v=ws.10).aspx アプリケーション ディレクトリ パーティションの作成 http://technet.microsoft.com/ja-jp/library/cc771757(v=ws.10).aspx ディレクトリ パーティションの操作 http://technet.microsoft.com/ja-jp/library/cc730613(v=ws.10).aspx グループ メンバーシップを管理する http://technet.microsoft.com/ja-jp/library/cc770527(v=ws.10).aspx AD LDS インスタンスのバックアップまたは復元 http://technet.microsoft.com/ja-jp/library/cc733082(v=ws.10).aspx AD DS のデータを AD LDS と同期する http://technet.

Dsget Commnad on ADLDS

AD LDSの役割を追加するだけでは、dsget, dsaddなどのコマンドが使えない。なので、Active Directory ドメインサービスの役割を追加して、サービスは起動せずにコマンドだけ使う。(powershellからアクセスできるが異様に遅い) http://adtan.wordpress.com/2012/02/12/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3-%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%B8%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC/ http://adtan.wordpress.com/2012/01/02/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3-%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E5%89%8A%E9%99%A4/ # dsget group “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -members -s lds01:389 # dsmod group “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -addmbr “CN=test01,OU=Groups,DC=codelogue,DC=com” -s lds01:389 # dsrm “CN=test01,OU=Users,DC=codelogue,DC=com” -s lds01:389 -noprompt dsrmは削除するか確認が返ってくるのでnopromptで自動返答する

CLI ADLDS

ユーザグループ追加などの作業で必要となる。 Windows 2008 R2: Managing AD LDS using the AD PowerShell Module 以下はコマンド例。 New-ADUser -name “test01” -Displayname “test01” -server lds01:389 -Path “OU=Users,DC=codelogue,DC=com” Add-ADGroupMember -identity “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -member “CN=test01,OU=Users,DC=codelogue,DC=com” -partition “DC=codelogue,DC=com” -server lds01 powershellをコマンドプロンプトから呼び出してバッチ処理する http://news.mynavi.jp/column/powershell/013/index.html http://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner05.aspx http://d.hatena.ne.jp/mokkyu/20080421/1208728868 ファイルを準備する C:¥Users¥Administrator¥Desktop¥Test.ps1 Import-Module ActiveDirectory New-ADUser -name “test01” -Displayname “test01” -server lds01:389 -Path “OU=Users,DC=codelogue,DC=com” Add-ADGroupMember -identity “CN=g_sales,OU=Groups,DC=codelogue,DC=com” -member “CN=test01,OU=Users,DC=codelogue,DC=com” -partition “DC=codelogue,DC=com” -server lds01 コマンドプロンプトを開く C:¥Users¥Administrator¥Desktop> # powershell Set-ExecutionPolicy RemoteSigned # powershell .

Port-forward on Linux

Linuxをルータ化して二つのセグメントを受け渡しする方法。 http://okwave.jp/qa/q7892385.html 上記サイトに載っている内容プラスiptablesを無効化しないとだめ。 なお、各セグメントに接続されている端末にはGATEWAYかスタティックルートをLinuxルータに向けておく必要あり。 http://lists.debian.or.jp/debian-users/200709/msg00166.html

Firebase(Google) realm 利用方法 https://realm.io/docs/javascript/latest realm を link した状態で ios アプリがデプロイできない react-native run-ios コマンドで行う https://realm.io/docs/javascript/latest/#missing-realm-constructor Command $ npm install -g firebase-tools $ firebase login $ firebase init $ vi public/index.html $ firebase deploy Create CI Auth Token firebase login:ci firebase deploy --token "$FIREBASE_TOKEN"

AdminLTE導入手順 ソースコードのダウンロード 以下のURLからZipファイルをダウンロードする https://github.com/almasaeed2010/AdminLTE/releases Zipファイルの解凍 AdminLTE-X.X.Xフォルダ配下にpractice.htmlを作成 依存ファイル Bootstrap 3 jQuery 1.11+ サポートブラウザ IE9+ Edge(latest) Firefox(latest) Safari(latest) Chrome(latest) Opera(latest) ライセンス MIT License 参考資料 Qiita - 管理画面を作る:AdminLTE 基本編