■ssh接続
gitやec2などのホストに接続する場合に使う。例えばec2の場合。

ssh -i ~/.ssh/hogeKey.pem ec2-user@54.177.○.○

このhogeKey.pemの鍵指定や接続先をIPではなくホスト名にしたい場合、~/.ssh/configに設定を追記しておく必要がある。

$ ssh ec2-user@hogehoge

$ cat ~/.ssh/config
Host hogehoge
User ec2-user
HostName 54.177.○.○
PreferredAuthentications publickey
identityfile ~/.ssh/hogeKey.pem

■sshクライアント、サーバの~/.ssh/の中
クライアント側の~/.ssh/には秘密鍵ir_rdsとかが必要。あと、configファイルとかもある。このconfigファイルはsftp,rsyncでも有効。
サーバ側の~/.ssh/にはauthorized_keysファイルが必要。もちろん、クライアントにもなりうるなら鍵とかも必要。authorized_keysには公開鍵の内容を追記する。行単位で複数設定できる。

■sshのワンラインのコマンド実行
こんなかんじ
$ ssh ec2-user@hogehoge ls -l

■sshのエスケープシーケンス機能

~で始まる。~.が接続の切断とか。~?でへるぷを表示できる

■sshを使ったファイル転送
scpやsftpとか。それぞれrcpやftpを模倣したもの。また、rsync + opensshを併用する方法もある

refs:scp,sftp,rsyncの例

■SSL(Secure Socket Layer)について。

refs book

できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応.../インプレスジャパン
¥2,625
Amazon.co.jp




sslの新しいバージョンはTLS(Transport layer security)という名前で標準化されたため、SSL/TLSといわれる事もある。単にSSLといえば、SSL/TLSの事を指す。

■機能
相互認証。CA(Certificate Authoriy 認証局)を介す。相互認証だけど、サーバ側だけ証明する事が多い。
完全性。改ざんされていないか?電子署名。暗号化で盗聴防止。


OpenSSL。SSLを利用するための必要なソフトウェア。
mod_ssl。OpenSSLを使ってApacheをSSLに対応させるモジュール。

mod_sslは、OpenSSLによりApacheでhttpsを使えるようにするモジュール。mod_sslを使う事でOpenSSLとApacheを連携させることができる。

■CA認証のしくみ

SSL対応のサイトにするときに証明書をCAに発行してもらう。利用者がサイトにアクセスしたら、サイトは証明書をブラウザに返す。ブラウザは自身が持っているCAの情報をもとに、送られた情報が正しいかどうかを確認する。初めてのリクエストでブラウザに登録されていないCAが発行した証明書の場合、ユーザにその証明書を信用するかどうかの確認ダイアログを出す。

このため、まずはCAに自分のサイトを登録し、本物のサイトである事を証明してもらう必要がある。

webサイトの鍵を自分で証明する自己署名という方法がある、自己署名でテスト用の小名称を作れば、CAへの登録をせずにSSL対応のサイトが作れる。が、自己署名ではサーバの認証ができないため、本格運用のときはCAへの登録が必要。

*ってことは、例えば社内で使うようなサイトで暗号化だけが目的なサイトなら自己署名のssl,httpsで十分?


■本格運用

信頼できるサイトにするためにCAに有料で証明書を発行してもらう。主なCAは、ベリサイン、グローバルサイン、サイバートラスト。他にも色々あるけど、違いはただ値段。あとは対応しているブラウザ。マイナーのブラウザには対応していないCaもある。

手順としては、CSR(certificate signing request)ファイルをcaに送る。webサイトの鍵は自己署名で使ったテスト用の鍵でもおっけ。証明書が送られてくる。apacheの場合、この証明書をcsrファイルと同じディレクトリにおき、ssl.confのSSLCertificateFileという項目に証明書のファイル名を設定する。


■自己署名

自己署名を自分のmacでやってみた。結論から言うと、試してみたけどできなかった・・・

apache2 $ pwd
/etc/apache2
apache2 $ ls
extra        magic        original    users
httpd.conf    mime.types    other

・webサーバの鍵を作る
apache2 $ sudo openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
....++++++
..................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
apache2 $

server.keyファイルができた。

apache2 $ ls
extra        magic        original    server.key
httpd.conf    mime.types    other        users

・証明書をつくる。国、location、ホストとかは適当に入力。

apache2 $ sudo openssl req -new -days 3000 -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:tokyo-dayo
Locality Name (eg, city) []:shibuya-dayo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hoge company
Organizational Unit Name (eg, section) []:hogehoge unit selection
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:hoge@hoge.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

・server.csrができた。

apache2 $ ls
extra        magic        original    server.csr    users
httpd.conf    mime.types    other        server.key
apache2 $

・テスト用に自己署名する

apache2 $ sudo openssl x509 -req -signkey server.key -days 3000 -in server.csr -out server.crt
Signature ok
subject=/C=JP/ST=tokyo-dayo/L=shibuya-dayo/O=hoge company/OU=hogehoge unit selection/CN=www.example.com/emailAddress=hoge@hoge.com
Getting Private key
Enter pass phrase for server.key:

・このままだとapacheを起動するとパスフレーズを要求されるので、鍵のパスフレーズを解除する。

apache2 $ sudo openssl rsa -in server.key.bak -out server.key
Enter pass phrase for server.key.bak:
writing RSA key
apache2 $ ls


・これでapacheを再起動すれば、httpsでリクエストできるはずなのに、今まで通りhttpでしかアクセスできなかった。なぜだ・・・/etc/apache2/extra/httpd-ssl.conf ファイルの中身をみてもデフォルトのままでいけるはずなのに。ここでギブ


refs
鍵交換方式によりssl接続

■sslとsshの違い
refs:sshやらsslやら