LoginSignup
13
23

More than 5 years have passed since last update.

OpenSSH の 証明書認証

Last updated at Posted at 2016-10-05

OpenSSH には個々の公開鍵をサーバに登録するのではなく、CA の公開鍵を登録して、証明書で認証する方法があります。

証明書の発行

CA 公開鍵/秘密鍵ペアの作成

$ ssh-keygen -f ca.key -t ed25519
$ ls
ca.key  ca.key.pub

ユーザの公開鍵への署名

公開鍵に署名して証明書を発行します。

シリアルナンバーで失効させるため -z を付けておきます。

$ # -V で期限も付けられる
$ # ssh-keygen -s ca_key -I certificate_identity -n principals -z serial_number id_ed25519.pub
$ ssh-keygen -s ca.key -I hexa -n ubuntu -z 1 id_ed25519.pub

発行された証明書(id_ed25519-cert.pub)はユーザの秘密鍵と同じディレクトリに入れておきます。

署名した公開鍵の証明書の確認

$ ssh-keygen -Lf id_ed25519-cert.pub
id_ed25519-cert.pub:
        Type: ssh-ed25519-cert-v01@openssh.com user certificate
        Public key: ED25519-CERT SHA256:A7RX7U5KH8Fi8kvh1k2Rk7j1MGilnOzjLIU5iiZm4aQ
        Signing CA: ED25519 SHA256:So6T7aqA5gQ8BC+D2cS8CBHm3hmZu7RPa+qWObPJRWQ
        Key ID: "hexa"
        Serial: 1
        Valid: forever
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

設定

sshd_config の設定

PasswordAuthentication 等の使用しない設定は切っておきます。

公開鍵(ca.key.pub)をサーバ上に置いて、/etc/ssh/sshd_config に TrustedUserCAKeys を追加します。

TrustedUserCAKeys /etc/ssh/ca.key.pub

ssh を再起動します。

$ systemctl restart sshd.service

ログイン

$ ssh -i id_ed25519 ubuntu@192.168.1.2

証明書の失効

公開鍵認証と異なり、証明書の認証の場合は CA の公開鍵のみをサーバに設置しているため、各ユーザの公開鍵を削除して、ログインできなくするということができません。

代わりに、発行した証明書を失効することができます。

KRL の作成

KRL(Key Revocation List) を作成して、証明書を失効させます。

ファイルに失効させる証明書の serial をファイルに記載しておき、KRL を作成します。

$ cat list.txt
serial:1
$ # KRL を更新する場合は -u を付ける
$ ssh-keygen -k -f krl -s ca.key.pub list.txt

sshd_config の設定

作成した krl をサーバ上に置いて、/etc/ssh/sshd_config に RevokedKeys を追加します。

RevokedKeys /etc/ssh/krl

ssh を再起動します。

$ systemctl restart sshd.service

参考 URL

13
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
23