CSM: 一時的なSSH証明書をためす

# 概要

別の記事["CSM: Dynamic Secretをためす"](https://qiita.com/shinyaarai/items/3312112f3ce563f58ac4)にて、"必要なときに作成され、利用後削除される'一時的に利用される認証情報'"である Dynamic Secretの利用について、ご紹介させていただきました。
SSHでの 公開鍵と秘密鍵を利用した認証がよく用いられますが、多くのサーバにアクセスする必要がある場合、公開鍵を各サーバへの設定が必要で、管理が大変です。管理が複雑なため、不必要になった鍵をそのままにしておりたり、同じ鍵を長期間利用し続ける等、管理上の問題が生じることとなり、セキュリティ上の懸念があります。

今回、ご紹介する方法では、SSHの公開鍵と秘密鍵のペアを利用する代わりに、一時的なSSH証明書を発行してSSHの認証を行う方法をご紹介します。

# 目的

最短で、CSMで一時的な証明書を発行し、SSHでの利用をためします

# 参照ドキュメント

- Akeyless Documentation
    - [SSH Certificates](https://docs.akeyless.io/docs/how-to-configure-ssh)
- Akeyless Tutorial
    - [Using SSH Certificates to Access Remote Machines](
https://tutorials.akeyless.io/docs/using-ssh-certificates-to-access-remote-machines)

# 手順

## CSMのセットアップ
CSMのセットアップがまだの場合は、まずCSMのセットアップ (["CSM: Dynamic Secretをためす"](https://qiita.com/shinyaarai/items/3312112f3ce563f58ac4)) を行います


## signing-keyの作成

CAでの署名で必要となる、RSAの鍵を用意します
既存のキーをインポートすることも可能ですが、今回は新規作成を行います

Items > New > Encryption Key > DFC を選択します

![CSM_SSH-1-2a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/78927339-4edf-52e8-3259-9c88aabd8529.png)


"Name"へ鍵名（任意：例"signing-key")を入力し、"Next"をクリックします

![CSM_SSH-1-3a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/140e24c8-c396-2366-7eb2-2de2fd506dd7.png)

”Type"で"RSA2048"を選択、"Generated By"で、"Akeyless"を選択し、"Next"をクリックします

![CSM_SSH-1-4a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/e0ad9638-8c67-3f94-a27e-337c1e25b207.png)

"get Public RSA key"をクリックします
![CSM_SSH-1-5a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/b358b9f6-65a1-ad97-6520-a3ca3a365955.png)

”RSA Public Key"の値をコピーします
![CSM_SSH-1-6a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/4dbfaf28-472a-9a5b-5a1a-e474f06ac019.png)



## サーバの設定

SSHサーバ側の "/etc/ssh/ca.pub"へ先ほどコピーした”RSA Public Key"の値を保存します
```
$ sudo vi /etc/ssh/ca.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIuaTlibfGhg3l6Wxrm+UbMDMYRHftWBGZRe7GSTLwyC+48++CEjsDICi2zeYtviq9pueDN+gTrdG/uV/c74gWdDbJsijPmUynqfdTYQpU+TYSInpbrGOOnL0rl7X2am3Qp5cRXYheoHwdf2EOzNhQt7+G7ByCW8i+qmttCIsLAU7ZU0rWJh2HQBBwW9mgVk0DfKBxdm4tdjkhW+bDlEyVwpBIsav2C4avb2APNJJwhqKDfUFKeX5kYQvsmQvitkkoT7z8+eURmEqznv453W09sboHHiyFzn7/o9dYSdfIB3L09nRzJ23M0RubJwXAWMFlyhtitT/y64Q67PaE/XSh
```
"/etc/ssh/sshd_config"の最後へ下記２行を追加します
```
$ sudo vi /etc/ssh/sshd_config
    ...
	TrustedUserCAKeys /etc/ssh/ca.pub
	PubkeyAcceptedKeyTypes=+ssh-rsa,ssh-rsa-cert-v01@openssh.com
```
sshdの再起動を行います
 ```
$ sudo service ssh restart
```

## CAの作成
Items > New > "SSH Cert Issuer" を選択します
![CSM_SSH-2-1a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/7e3b44a5-94e8-171a-f3e5-444b6ae853e5.png)

Nameに"SSH Cert Issuer" の名前（任意:例"ssh-cert-issuer"）を入力します
"Signer Key"で、作成したRSA鍵(例:"/signing-key"）をリストより選択します
"Allowed User(s)"で、sshの対象のユーザを入力します
"Certificate lifetime in seconds"で、SSH証明書の有効期間の指定が可能です（今回は変更なし）
![CSM_SSH-2-2a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/f138391c-a631-b7b5-1b46-4b9512319e7f.png)

"SSH Cert Issuer"が作成されたことを確認します
![CSM_SSH-2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613085/37df4172-e605-2da2-a298-8608ad93ac25.png)




## SSH証明書の発行
sshクライアント側で、一時的に利用可能なSSH証明書の発行をおこないます
```
akeyless get-ssh-certificate --cert-username ubuntu --cert-issuer-name ssh-cert-issuer --public-key-file-path ~/.ssh/id_rsa.pub
```

これにて、一時的に利用可能なSSH証明書をもちいて、sshが利用できるようになりました

# 補足
SSH証明書の他、PKI/TLS証明書もサポートしています

https://docs.akeyless.io/docs/ssh-and-pkitls-certificates