[GITEA] Restrict certificate type for builtin SSH server
- While doing some sanity checks over OpenSSH's code for how they handle certificates authentication. I stumbled on an condition that checks the certificate type is really an user certificate on the server-side authentication. This checks seems to be a formality and just for the sake of good domain seperation, because an user and host certificate don't differ in their generation, verification or flags that can be included. - Add this check to the builtin SSH server to stay close to the unwritten SSH specification. - This is an breaking change for setups where the builtin SSH server is being used and for some reason host certificates were being used for authentication. (cherry picked from commit74c88c3217
) (cherry picked from commit40df1875da
) (cherry picked from commit07152e9a9d
) (cherry picked from commit7bc135732d
)
This commit is contained in:
parent
871c729742
commit
de35b141b7
1 changed files with 6 additions and 0 deletions
|
@ -191,6 +191,12 @@ func publicKeyHandler(ctx ssh.Context, key ssh.PublicKey) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cert.CertType != gossh.UserCert {
|
||||||
|
log.Warn("Certificate Rejected: Not a user certificate")
|
||||||
|
log.Warn("Failed authentication attempt from %s", ctx.RemoteAddr())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// look for the exact principal
|
// look for the exact principal
|
||||||
principalLoop:
|
principalLoop:
|
||||||
for _, principal := range cert.ValidPrincipals {
|
for _, principal := range cert.ValidPrincipals {
|
||||||
|
|
Loading…
Reference in a new issue