参考URL
OpenSSHの認証に証明書を使う方法
https://support.conoha.jp/v/openssh/
SSH CA認証まとめ
https://kontany.net/blog/?p=211
OpenSSH の 証明書認証
https://qiita.com/Hexa/items/79897f7df5ad59bb5ca1
SSH-KEYGEN (1)
https://euske.github.io/openssh-jman/ssh-keygen.html
できること
- 鍵の有効期間の設定
- 接続元IPの制限
- 発行した証明書の失効
手順
CA用のキーペア作成
$ ssh-keygen -f ca.key
証明書を発行
- CAの秘密鍵
- クライアントの公開鍵
が必要
$ ssh-keygen -s ./ca.key -I "ca test" -n "test" -z 1 -V +1d -O source-address=123.123.123.123 ./client/client.key.pub
- -V
- 有効期限
- -z
- 指定したシリアルNoは証明書を失効させるときに使用する。デフォルトの0だと失効できない。
- -O
- オプション。source-address=123.123.123.123でIPを制限できる。他にも色々あるようだ。
証明書の内容確認
$ ssh-keygen -L -f ./client/client.key-cert.pub
client/client.key-cert.pub:
Type: ssh-rsa-cert-v01@openssh.com user certificate
Public key: RSA-CERT SHA256:Sr7h0w3I+FP7QghNRETs8W5TdygzZ57bH4sgSQkqsDQ
Signing CA: RSA SHA256:JCpHzCX91c53T+iddH5tQFa8ihgVSTl+5IUJfx43P1Y
Key ID: "ca test"
Serial: 1
Valid: from 2019-09-28T14:53:00 to 2019-09-29T14:54:31
Principals:
test
Critical Options:
source-address 123.123.123.123
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rc
サーバの設定
- CAの公開鍵を置く。
- 許可するPrincipalsをファイルに書く。複数ある場合は改行する。
$ vi /etc/ssh/sshd_config
# 下記を追加
TrustedUserCAKeys /etc/ssh/ca.key.pub
AuthorizedPrincipalsFile /etc/ssh/authorizedprincipals
# チェック
$ sshd -t
# 再起動
$ systemctl restart sshd
使用方法
- 証明書はクライアントの鍵と同じところに置く
$ ssh -i ./client/client.key test@192.168.0.1
証明書の失効
$ vi list.txt
serial:1
serial:2
↑
0は指定できない
# KRL を更新する場合は -u を付ける
$ ssh-keygen -k -f krl -s ca.key.pub list.txt
$ vi /etc/ssh/sshd_config
# 下記を追加
RevokedKeys /etc/ssh/krl
$ systemctl restart sshd