14.3.5. SSH 証明書の作成
証明書とは、署名された公開鍵です。ユーザーおよびホストの公開鍵を CA サーバーの秘密鍵で署名するために CA サーバーにコピーする必要があります。
重要
多くのキーを CA にコピーして署名すると、一意に名前が付けられていない場合は混乱が生じる可能性があります。デフォルト名が常に使用されると、コピーされる最新のキーによって、以前のコピーされたキーが上書きされます。これは、1 つの管理者に許容可能なメソッドである可能性があります。以下の例では、デフォルト名が使用されます。実稼働環境では、簡単に認識できる名前を使用することを検討してください。キーのコピー先となる管理ユーザーが所有する CA サーバーに、指定されたディレクトリーを設定することが推奨されます。これらのキーを
root
ユーザーの /etc/ssh/
ディレクトリーにコピーすることは推奨していません。以下の例では、key / という名前のディレクトリーを持つ admin
という名前
のアカウントが使用されます。
管理者アカウント(この例では
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
鍵をコピーできるようにパーミッションを設定します。
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
admin
)と、ユーザーのキーを受け取るディレクトリーを作成します。以下に例を示します。
mkdir keys
~]$ mkdir keys
chmod o+w keys
~]$ chmod o+w keys
ls -la keys
total 8
drwxrwxrwx. 2 admin admin 4096 May 22 16:17 .
drwx------. 3 admin admin 4096 May 22 16:17 ..
14.3.5.1. ホストを認証する SSH 証明書の作成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ホスト証明書に署名するコマンドの形式は
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
になります。ホスト証明書の名前は
ssh-keygen -s ca_host_key -I host_name -h ssh_host_rsa_key.pub
ssh-keygen -s ca_host_key -I host_name -h ssh_host_rsa_key.pub
ssh_host_rsa_key-cert.pub
です。
手順14.4 ホスト証明書の生成
ユーザーへのホストを認証するには、ホストに公開鍵を生成し、CA で署名した CA サーバーに渡して、ホストへのログインを試行するユーザーに存在するようにホストに保存するために再度渡す必要があります。
- ホスト鍵は、システムで自動的に生成されます。一覧表示するには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 選択した公開鍵を CA として指定されたサーバーにコピーします。たとえば、ホストからは以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、CA から以下を行います。scp root@host_name.example.com:/etc/ssh/ssh_host_rsa_key.pub ~/keys/ssh_host_rsa_key.pub
~]$ scp root@host_name.example.com:/etc/ssh/ssh_host_rsa_key.pub ~/keys/ssh_host_rsa_key.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - CA サーバーで、ホストの公開鍵に署名します。たとえば、
root
で以下を実行します。host_name は、証明書を必要とするシステムのホスト名です。ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -Z host_name.example.com -V -1d:+54w /home/admin/keys/ssh_host_rsa_key.pub
~]# ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -Z host_name.example.com -V -1d:+54w /home/admin/keys/ssh_host_rsa_key.pub Enter passphrase: Signed host key /home/admin/keys/ssh_host_rsa_key-cert.pub: id "host_name" serial 0 for host_name.example.com valid from 2015-05-26T12:21:54 to 2016-06-08T12:21:54
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 証明書をホストにコピーします。CA の場合の例を以下に示します。
scp /home/admin/keys/ssh_host_rsa_key-cert.pub root@host_name.example.com:/etc/ssh/
~]# scp /home/admin/keys/ssh_host_rsa_key-cert.pub root@host_name.example.com:/etc/ssh/ root@host_name.example.com's password: ssh_host_rsa_key-cert.pub 100% 1384 1.5KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユーザーがログインプロセスの開始時に証明書をユーザーのシステムに提示するようにホストを設定します。
root
で、/etc/ssh/sshd_config
ファイルを以下のように編集します。HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sshd
を再起動して、変更を有効にします。service sshd restart
~]# service sshd restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユーザーのシステムで、ユーザーが以前に設定したホストにログインしている場合は、
~/.ssh/known_hosts
ファイルからホストに属する鍵を削除します。ユーザーがホストにログインすると、ホストの信頼性についての警告が表示されなくなります。
クライアントシステムでホスト証明書をテストするには、手順14.3「ホスト署名キーの信頼」 の説明に従って、クライアントがグローバル
/etc/ssh/known_hosts
ファイルを設定しており、サーバーの公開鍵が ~/.ssh/known_hosts
ファイルにないことを確認します。次に、リモートユーザーとして SSH 経由でサーバーへのログインを試みます。ホストの信頼性についての警告は表示されません。必要な場合は SSH コマンドに -v
オプションを追加して、ロギング情報を確認します。