Table of Contents |
---|
1 - Abstract
As there are two different types of certificates, there are two individual tasks to setup a host.
- Host Certificate
- Client Certificate
Here at NetDEF we only use Client Certificates.
2 - Client Certificate
To setup the client certificateTo enable certificate based login on a host, the public rsa key ssh_host_rsa_key.pub
needs to be signed. The resulting certificate is called ssh_host_rsa_key-cert.pub
. To enable ssh based login two things are required on the host:
- host certificate:
ssh_host_rsa_key-cert.pub
- CA public key:
yubikeyX.pub
Step 1 - Host Certifiacte
key of the certificate authority is needed. There are three public keys called 'yubikey1.pub'
, 'yubikey2.pub'
and 'yubikey3.pub'
.
Step 1 - Verify client certificates
Add the following lines to the file
To tell the SSH daemon about the certificate add the following configuration lines to the file '
/etc/ssh/sshd_config
. In addition copy the certificate
to tell the SSH daemon about the public key to verify client certificates. The host trusts all certificates the are signed by our CA.'
Code Block | ||
---|---|---|
| ||
### User CA certificate
TrustedUserCAKeys /etc/ssh/yubikey1.pub
TrustedUserCAKeys /etc/ssh/yubikey2.pub
TrustedUserCAKeys /etc/ssh/yubikey3.pub |
Note |
---|
Copy the public keys to the specified location. |
Step 2 - Principals
Next we configure the hosts to accept only certain principals. To do so, add this line to
The host sends this certificate to the client to identify itsself as a trusted host.'
/etc/ssh/sshd_config'
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
### Auth Principals
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u |
Then we need to populate the principals file. For each user we need to create a file.
Code Block | ||
---|---|---|
| ||
mkdir -p /etc/ssh/auth_principals echo -e 'host.netdef.org\nroot-everywhere' >### Host certificate HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pubauth_principals/root |
This allows to all users to login as root that have either host.netdef.org
or root-everywhere
specified in the list of principals within their certificate.
You can control access to any other local user by creating the corresponding files under '
/etc/ssh/auth_principals
'
.