SSLの基本の報告
図解で学ぶネットワークの基礎: SSL編を読んだ内容を書き留めます。
SSL通信
webブラウザのステータスバーに錠前マークが出ているとSSL通信をしている。
また、アドレスがhttps://...
というURLだった場合にもSSL通信をしている状態。
機能と位置付け
機能は大きくわけて2つ
- データの暗号化
- 通信相手が信頼できることの確認(認証)
データの暗号化と信頼の確認
SSLはインターネット上でやり取りするデータの暗号化を行う。
個人情報やクレジットカードの情報などをインターネットでやり取りする際に、データが見られてしまってもわからなくするように暗号化をして途中で盗み見られる事を防止している。
「サーバー証明書」を利用しての信頼性の確認
データを送るサーバーが信頼できるかどうかをクライアントがサーバーから「サーバー証明書」を受け取り、検証をすることによって信頼できるかどうかの判断ができる。
SSLの通信全体から見た立ち位置
通信の流れは以下のようになる。
- Webブラウザが
https://...
宛のサーバーにデータを送る - WebブラウザはTCPでは無くSSLにデータを渡す
- SSLはブラウザから受け取ったデータを暗号化してTCPへ渡す
- 暗号化データを受け取ったTCPはパケットに
443port宛
と明記する - このデータがIP、イーサネットとわたって回線上に送り出される
※受信時は送信時の流れとは逆になる
SSLの概要
「共通鍵暗号」「公開鍵暗号」
SSLは「共通鍵暗号」と「公開鍵暗号」の2つの暗号方式を使う
「共通鍵暗号」方式
- 暗号化と復号に同じ鍵を使う
- 暗号化と復号の処理が軽い
- 送信側と受信側があらかじめ同じ鍵をもっていなければならない
- 通信相手を特定していないインターネット通信で同じ鍵を事前に持つことが不可能
- 鍵をやりとりする際に盗まれる可能性がある
「公開鍵暗号」方式
- 公開鍵と秘密鍵のペアの鍵を使う
- 片方の鍵で暗号化したデータは、ペアの鍵でしか復号できない
- 片方の鍵をインターネットで公開してももう片方の鍵を秘密にしておけば安全にデータを送れる
「公開鍵暗号」で「共通鍵」を安全におくる
ふたつを組み合わせた通信のやりとりがSSL通信の概要である。
- クライアントがサーバーにSSL通信の要求を送る
- サーバーは自身の公開鍵が入った証明書をクライアントに返信
- クライアントはサーバーの公開鍵を使って共通鍵を暗号化してサーバーに送る
- 共通鍵を使ってクライアントとサーバーは本来の目的であるデータの暗号化/復号を高速・軽量に処理できるようになる
SSLの全貌
2つの仕様で構成
SSLで運ぶメッセージはレコード
と呼ばれている。
レコード・プロトコル
- レコードの構成するそのもの
- レコードはヘッダー部分とデータ部分に分かれている
- データ部分にハンドシェーク・プロトコルが入る
ハンドシェーク・プロトコル
- データ部分に入る
- メッセージや、暗号通信時の暗号化データが入る
- 暗号通信をするにあたっての必要な情報をやりとりする際に使われる
- ここのメッセージは種類が決まっている
ClientHello
ServerHello
一般的なやりとり
以下のやりとりを行い、それ以降はクライアントとサーバーは共通鍵を使って暗号化通信を実施する
- 暗号通信時に使う暗号方式を決める
- クライアントがサーバーに暗号通信で使う暗号通信方式などを提案する
- 暗号方式だけでなく,サーバー認証の方式,鍵交換の方式,ハッシュ関数の種類など
- サーバーは提案のあった方式から適切なものを選択して返答する
- クライアントがサーバーに暗号通信で使う暗号通信方式などを提案する
- Certificateメッセージの利用
- ClientKeyExchangeメッセージの送信
- ハンドシェーク終了
- クライアントはこれまで決めた暗号方式の採用を宣言し、ハンドシェークの終了をサーバーに知らせる
- サーバーの動作もクライアントと同様にハンドシェークの終了をクライアントに知らせる
- ハンドシェーク終了
通信相手のサーバーが信頼できるかの検証
証明書の「署名」
サーバー証明書はサーバーの管理者が「認証局」に申請して発行してもらう。
サーバー証明書の中にある情報
認証局の信頼性の判断
本日の学習 (2016年08月20日(土))
本日、こちらでは最高気温が35°です。
さらに雨も降りますので雷も発生することでしょう。
vi
viの基本
チュートリアルやります。
iTermやTerminalで以下のコマンドでチュートリアルが起動します。
$ vimtutor
Linux
UNIX・Linuxとは
これ読みます。
- Linuxゲリラ戦記
- 高級なペイントツールで書かれたかわいいキャラクターたちが会話形式で進めていきます。
- キャラクターがいるだけですこぶる読みやすくなっています。
- UNIXとは / CUIとGUI / なぜUNIXなのか?
Linuxは、現在、最も勢いのあるUNIXであると言えるだろう。Linuxは、世界中のボランティアが協力して開発を続けており、しくみ(ソースコード)は全て公開されており、GPLという規約の元で、誰でも自由に改変・再配布できる(そのようなソフトをオープンソース・ソフトという)。
Debianをインストールする
Parallels + vagrant の環境があったので、parallels/debian-8.5
のボックスを持ってきて立ち上げ。
Linuxのファイル操作の基本
これをやります。
※以下は個人的な備忘録で、コマンド・手順などを掲載しているわけではないので注意してください。
再入門 体で覚えるLinuxの基本
全体的な印象としてはシェル周りは以前に行った「黒い画面入門」と似ており、さらにあちらの方がとっつきやすいので、復習するならあっち。
ログインとログアウト
この「再入門」では「Linux」を,「カーネルやライブラリ,コマンドなどで構成されたOS」という意味で用います。特にカーネルを指す場合は,「Linuxカーネル」という言葉を用います。
言葉は正しく。
「マルチユーザー/マルチタスク」,「ファイル・システム」,「シェルと多様なコマンド群」,「X Window System」といったキーワードが挙げられます。
機能面の特徴。
ファイルの仕組みと操作法
別の言葉でファイル・システムを表現することもあります。それは,「ファイルを格納するために,特定のファイル・システムの格納形式に従って整備されたストレージ・デバイス」というものです。これは,ファイル・システムの機能よりも,ファイルの物理的な在りかに着目した表現だと言えるでしょう。
ファイル・システムについての表現。
ファイルの保護機能で大きな役割を果たすのが,パーミッションです。パーミッションは,アクセス権とも呼ばれることから分かるように,「だれがアクセスできるのか」を記した情報です。パーミッションはファイルが持つ属性情報の一つです。
マルチユーザーの為の保護機能。パーミッション。
シェルの基本操作法
ユーザーがキーボードからコマンドライン*に入力したコマンドを解釈してその実行を制御するプログラムを,コマンド・インタプリタと言います。LinuxなどUNIX系OSで使われるコマンド・インタプリタ*1が,今回説明するシェルです。
シェルの簡単な説明(わかりやすいとは言っていない)。
標準入出力などにはデフォルトの割り当てがありますが,これをユーザーが自由に変更できます。これを「リダイレクション」(入出力の切り換え)と言います。 リダイレクション機能を利用するときには,メタキャラクタで指定します。
リダイレクションでよく利用しそうなメタキャラクタは以下。
- < 標準入力の切り替え
- > 標準出力の切り替え
- >> 標準出力の切り替え(追加出力)
リダイレクションに類似した機能にパイプ(あるいはパイプライン)があります。パイプ機能とは,あるコマンドの標準出力と別のコマンドの標準入力を連結することです(図7[表示])。パイプのメタキャラクタは「|*7」です。パイプ機能は2つのコマンドの連結に限定されるわけではなく,3つ以上のコマンドを連結することもできます。
パイプ便利です。
シェル・スクリプト
シェル・スクリプトは,「対話形式でコマンドを実行するのと同じ手順を自動的に実行したい」場合によく利用されます。一連の処理の自動化ということでは,システムの起動時や各種設定,あるいはソフトのインストールなどでも,シェル・スクリプトが利用されています。
こんな感じで使う。実行には、sh
や.
コマンドを利用。
システムに役立つコマンド 1 / 2
uname
システム情報を表示hostname
ホスト名の設定と表示uptime
システムの連続稼働時間を表示ps
プロセスの表示date
日付と時刻の表示、設定whoami
ユーザー名を表示last
最近ログインしたユーザーリストを表示
aptの基本
別の投稿を参照
sudoの設定
こちらを参照
sshの基本
vagrant + parallels で立ち上げたサーバーに対して以下の事を行う。
- パスワード認証ログインを禁止にする
- rootでのログインを禁止にする
- Port22 でログインできない
Debian 8(jessie)をインストールするときのまとめ
SSLの基本
読みます。
SSLが持つ機能は大きく二つある。「データの暗号化」と「通信相手が信頼できることの確認」(認証)
備忘録をこちらにまとめています。
mysqlの基本
立ち上げたサーバーに対してmysqlをインストールを行う。
終了
初めて触れたサーバーOSがCentOSだったのでそれをそのまま何も考えずに使っていました。
しかし、Linuxゲリラ戦記を読んで、これからはDebianを使っていってみよう。そう思いました。
おしまい
「aptの基本」の報告
パッケージシステムとは?
パッケージ管理システムとは、OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムである。
APT
DebianではAPTというパッケージ管理システムを利用する。
APT (Advanced Packaging Tool) は、Debian用に開発されたパッケージ管理システムである。dpkgのフロントエンドとして動作するように設計されたが、現在はRPMに対応するように移植されたapt-rpmもある。
基本的な使い方
例)vimのインストール
リポジトリの更新
$ sudo apt-get update
vimの検索
$ apt-cache search vim
vimの情報表示
vimのバージョンなど確認できる。
$ apt-cache show vim
vimのインストール
$ sudo apt-get install vim
vimの削除
$ sudo apt-get remove vim
moo
$ apt-get moo
Have you mooed today?
本日の学習 (2016年08月19日(金))
CSSの基本を学びます。
CSSの基本を理解
CODEPENを使って試してみると手軽でいいです。
ドットインストールCSS入門
動画で学習します。
ドットインストールCSS3入門
さらに動画で学習します。
CSS3がうまく動かない場合は、 Can I useを使ってチェック。
CSS3 Generator
色々なCSS試せます。試します。
[Flexbox Froggy]{http://flexboxfroggy.com}
ゲーム感覚でFLEXBOXの学習。
演習の実施
成果物: CSS TUTORIAL
演習を行った際に参照したサイトなど
- テキストの縦方向の中央揃えについて
- 使い勝手のよさそうなアイコンをCSSだけで6個作ってみた
- HTMLはシンプルで、紙をぺろっと折ったエフェクトをつけるチュートリアル
- CSSで作図する
- clearfixの最新版 -フロート関連やマージン相殺の不具合を解決するモダンブラウザ用clearfix
- 定義リスト[dl]のdt/ddを横並びにする方法
終了
最後の演習ですごく時間がかかりました。一日中やってた気がします…。
作図する事が慣れておらず、試行錯誤で色々とググりながらやったのが時間がかかった一番の要因です。
おしまい
本日の学習 (2016年08月18日(木))
本日の天気は雨ですし。雨の日に外に出なくていいってのはそれだけでテンションあがります。
HTMLの基本を理解する
30分間HTML入門
よいHTMLを身につけます。
標準に従って文書の構造を示すように書かれたHTMLは、ブラウザの種類やバージョンに関係なく、常に正しく情報を伝えることができます。たとえ見かけ上の表現方法が変わっても、「見出し」や「段落」という構造表現の概念は変わることがないからです。大切な情報を息長く活用できるようにするためにも、ぜひ「よいHTML」を書くようにしてください。
ドットインストールHTML入門
ここで動画使って学習します。
リファレンス
リファレンスはちゃんと読むべきです。 課題とセットで調べつつマークアップしていったらびっくりするくらい勉強になりました。
終了
知識をアップデートしていなかったせいもあって学ぶことが多かったです。 特にリファレンスは重要だと認識しました。今までの自分は正しい使い方ができていたのか(いやできていない)が不安になりました。
本や色々なブログ読むより良いなぁという印象うけました。
おしまい
「本当は怖くない」"黒い画面"入門の作業報告
Terminalの基本を覚えるプラクティス
Terminalの基本を覚える為のプラクティスとしてWebデザイナーの為の「本当は怖くない」"黒い画面"入門シリーズを行った作業報告です。
打ち込んだり学んだり履歴的なもの
雑ですが備忘録として残しておきます。
ls コマンド
ファイルやディレクトリの一覧を表示
pwd コマンド
現在のディレクトリパスを表示
echo コマンド
引数として与えた文字を画面に表示
環境変数
PATH
PATHに設定されているディレクトリはディレクトリ名を省略して実行が可能。
ls
やpwd
が/bin/ls
や/bin/pwd
と入力しなくても良いのはこのPATHが設定してあるから。
設定されているPATHはecho $PATH
で確認が可能
他の環境変数
PATH以外の環境変数はenv
コマンドによって確認が可能
cd コマンド
引数とオプション
引数
コマンドに渡す文字列
オプション
ハイフンから始まっているものがオプション。
ls
に-a
のオプションをつけるとドットファイルを含んだすべてのファイルを表示する。
man コマンド
マニュアルを見る。
-h
などのヘルプは簡易的なもの。
cURL コマンド
ファイルをダウンロードできる。
オプション-o
でファイル名を指定して保存する。
open コマンド
開くコマンド。
$open .
は現在のディレクトリをFinderで開く
ファイル操作の基本
touch コマンド
ファイルの作成
mkdir コマンド
ディレクトリの作成
-p
オプションを使うと階層を持つディレクトリを作成することができる
cp コマンド
ファイルのコピー
-r
オプションでディレクトリごとコピー
mv コマンド
ファイルの移動
rm コマンド
ファイルの削除
-r
オプションでディレクトリごと削除
cat コマンド
ファイルの中身を表示する
作業の自動化
ファイルにコマンドを羅列し、sh
コマンドで実行が可能
このコマンドが羅列されたファイルをScriptという
終了
打ち込んだコマンドを羅列していこうと思ってましたけど、そんなコマンドだけの説明ではなかったので履歴的な部分の構成を変更しないといけないなぁと思いつつ結局変更せずでした。
おしまい
256 INTERNS開始しました。
今回、合同会社フィヨルドさまの提供している256 INTERNSにリモートインターンとして参加しました。
256 INTERNS って?
学習とインターンがミックスされ、それがリモートやローカルで提供されているものです。
参加者は学習しつつ実践の場が与えられています。
詳しくはこちらを見るとわかります。
参加経緯
名古屋でもくもくとRubyだったりRailsを学習しながら身近な案件に投入してたんですが、正直ツラくなってきた為です。
ツラくなってきた主な理由は以下です。
僕がツラくなってきた理由
- どのレベルでどこまでの範囲を習得すればいいのかわからなくて不安
- 相談する人がいないので、ググってなんとか解決するけど本当にこれでいいか不安
- その場しのぎで、なんだか汚いコードになっても誰にも怒られないし苦言も呈されないのでそのままになるけどどう考えてもヤバイ
- そもそも使う案件が少なく、実践の機会が少ないので不満
- 寂しい
お盆のまっただ中にそんなことを思いながらネットサーフィンしてましたら、合同会社フィヨルドさまの提供しているリモートインターンにたどり着き、即日申し込みをしました。 そして現在に至ります。
このブログは何?
日々のインターンの記録を残すものです。
日々書きます。