公開鍵認証とSSH、SSLについて


ここではSSHやSSLなどで使われる公開鍵認証方式について紹介します。

🏈 共通鍵認証方式と公開鍵認証方式について

公開鍵認証方式とそれ以前に作られた共通鍵認証方式について紹介します。

共通鍵認証方式

  • 共通鍵認証方式はいわゆるパスワード認証、暗号化と復号化で同じ鍵(パスワード)を使う
  • 共通鍵をどうやって相手に送付するかの問題がある(同じ送付方法では意味がないため)

公開鍵認証方式

  • 復号化のための秘密鍵を手元に保持しておく
  • 暗号化のための公開鍵は外部に配布する
  • 暗号化は誰でもできるが、復号化は秘密鍵の保持者にだけしかできない

🗽 SSHでの公開鍵認証方式について

SSHとは暗号や認証を使って安全にサーバと通信するためのプロトコルです。このSSHについて説明します。

SSHの認証方式

SSHではデファクトスタンダードで公開鍵認証方式を使います。サーバ側に公開鍵を設置し、クライアント側に秘密鍵を置きます。クライアントの秘密鍵で通信するデータを暗号化して、公開鍵を使ってデータを復号化します。

OpenSSHの主要コマンド

OpenSSHはSSHプロトコルを利用するためのソフトウェアで、世界中で最もよく疲れているSSH実装です。

コマンド 説明
ssh SSHでサーバに接続してコマンドを実行する
scp SSHを利用して、クライアント、サーバ間でファイルを転送する
ssh-keygen 公開鍵認証方式で利用するキーペアを生成する

余談ですが、sshにコマンドを指定しておくと、リモートホストに接続した後に指定のコマンドだけ実行してログアウトしてくれます。

SSHキーの種類

種類 説明
RSA 鍵の長さが4096bitと長めで、基本的にこちらを選ぶべき
DSA SSH2で使えますが、鍵の長さが1024bitと少し短め

秘密鍵のパスフレーズについて

パスフレーズは秘密鍵を使う際に必要なパスワードで、万一秘密鍵が漏洩した際に勝手に使われるのを防ぐことができます。

🎉 SSL通信におけるサーバ証明について

SSL通信でも公開鍵認証方式が使われています。

SSLの通信の流れ

SSL通信の接続要求から通信までの流れは次のとおりです。

SSLサーバ証明書の役割

SSL接続要求じにサーバからクライアントにSSLサーバ証明書と公開鍵を渡します。クライアントは受け取ったSSLサーバ証明書から、接続相手の情報を確認して通信を行います。

🎳 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)