Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

14.3.5. SSH 証明書の作成

証明書とは、署名された公開鍵です。ユーザーおよびホストの公開鍵を CA サーバーの秘密鍵で署名するために CA サーバーにコピーする必要があります。
重要
多くのキーを CA にコピーして署名すると、一意に名前が付けられていない場合は混乱が生じる可能性があります。デフォルト名が常に使用されると、コピーされる最新のキーによって、以前のコピーされたキーが上書きされます。これは、1 つの管理者に許容可能なメソッドである可能性があります。以下の例では、デフォルト名が使用されます。実稼働環境では、簡単に認識できる名前を使用することを検討してください。キーのコピー先となる管理ユーザーが所有する CA サーバーに、指定されたディレクトリーを設定することが推奨されます。これらのキーを root ユーザーの /etc/ssh/ ディレクトリーにコピーすることは推奨していません。以下の例では、key / という名前のディレクトリーを持つ admin という名前 のアカウントが使用されます。
管理者アカウント(この例では admin )と、ユーザーのキーを受け取るディレクトリーを作成します。以下に例を示します。
~]$ mkdir 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 証明書の作成

ホスト証明書に署名するコマンドの形式は
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 サーバーに渡して、ホストへのログインを試行するユーザーに存在するようにホストに保存するために再度渡す必要があります。
  1. ホスト鍵は、システムで自動的に生成されます。一覧表示するには、以下のコマンドを入力します。
    ~]# ls -l /etc/ssh/ssh_host*
    -rw-------. 1 root root  668 May  6 14:38 /etc/ssh/ssh_host_dsa_key
    -rw-r--r--. 1 root root  590 May  6 14:38 /etc/ssh/ssh_host_dsa_key.pub
    -rw-------. 1 root root  963 May  6 14:38 /etc/ssh/ssh_host_key
    -rw-r--r--. 1 root root  627 May  6 14:38 /etc/ssh/ssh_host_key.pub
    -rw-------. 1 root root 1679 May  6 14:38 /etc/ssh/ssh_host_rsa_key
    -rw-r--r--. 1 root root  382 May  6 14:38 /etc/ssh/ssh_host_rsa_key.pub
  2. 選択した公開鍵を CA として指定されたサーバーにコピーします。たとえば、ホストからは以下のようになります。
    ~]# scp /etc/ssh/ssh_host_rsa_key.pub admin@ca-server.example.com:~/keys/ssh_host_rsa_key.pub
    The authenticity of host 'ca-server.example.com (10.34.74.58)' can't be established.
    RSA key fingerprint is b0:e5:ea:b8:75:e2:f0:b1:fe:5b:07:39:7f:58:64:d9.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'ca-server.example.com,10.34.74.58' (RSA) to the list of known hosts.
    admin@ca-server.example.com's password:
    ssh_host_rsa_key.pub                           100%  382     0.4KB/s   00:00
    または、CA から以下を行います。
    ~]$ scp root@host_name.example.com:/etc/ssh/ssh_host_rsa_key.pub ~/keys/ssh_host_rsa_key.pub
  3. CA サーバーで、ホストの公開鍵に署名します。たとえば、root で以下を実行します。
    ~]# 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
    host_name は、証明書を必要とするシステムのホスト名です。
  4. 証明書をホストにコピーします。CA の場合の例を以下に示します。
    ~]# 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
  5. ユーザーがログインプロセスの開始時に証明書をユーザーのシステムに提示するようにホストを設定します。root で、/etc/ssh/sshd_config ファイルを以下のように編集します。
    HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
  6. sshd を再起動して、変更を有効にします。
    ~]# service sshd restart
  7. ユーザーのシステムで、ユーザーが以前に設定したホストにログインしている場合は、~/.ssh/known_hosts ファイルからホストに属する鍵を削除します。ユーザーがホストにログインすると、ホストの信頼性についての警告が表示されなくなります。
クライアントシステムでホスト証明書をテストするには、手順14.3「ホスト署名キーの信頼」 の説明に従って、クライアントがグローバル /etc/ssh/known_hosts ファイルを設定しており、サーバーの公開鍵が ~/.ssh/known_hosts ファイルにないことを確認します。次に、リモートユーザーとして SSH 経由でサーバーへのログインを試みます。ホストの信頼性についての警告は表示されません。必要な場合は SSH コマンドに -v オプションを追加して、ロギング情報を確認します。