Description
What version of Go are you using (go version
)?
$ go version 1.13.8
Version of x/crypto
: 1d94cc7ab1c630336ab82ccb9c9cda72a875c382
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env n/a
What did you do?
I tried to connect to an OpenSSH 8.2 server with the ssh-rsa
host key algorithm disabled on the server. I also tried to run an x/crypto/ssh
server and connect from an OpenSSH client with ssh-rsa
disabled. Lastly, I tried to sign a host certificate with ssh.Certificate.SignCert
with a SHA-2 based signature.
What did you expect to see?
I expected the RSA host key and certificate to validate successfully with the new SHA-2 based signatures introduced in RFC 8332. I also expected to be able to sign host certificates and have them automatically received a SHA-2 based signature.
OpenSSH has already deprecated ssh-rsa
(i.e. SHA-1 based) signatures in host certificates in version 8.2 because of safety reasons. They can still be used by the host key algorithm must be manually specified.
What did you see instead?
I was unable to connect either as a server or a client if ssh-rsa
wasn't enabled while using RSA host keys or host certificates. I was able to sign a certificate with the AlgorithmSigner
wrapper approach (i.e. by forcefully overriding Sign
) proposed by @stoggi in #36261, but it's not a great experience for users.