@@ -508,21 +508,32 @@ func LogCertificate(w http.ResponseWriter, cert *x509.Certificate) {
508
508
func LogSSHCertificate (w http.ResponseWriter , cert * ssh.Certificate ) {
509
509
if rl , ok := w .(logging.ResponseLogger ); ok {
510
510
mak := bytes .TrimSpace (ssh .MarshalAuthorizedKey (cert ))
511
- certType := "user"
511
+ var certificate string
512
+ parts := strings .Split (string (mak ), " " )
513
+ if len (parts ) > 1 {
514
+ certificate = parts [1 ]
515
+ }
516
+ var userOrHost string
512
517
if cert .CertType == ssh .HostCert {
513
- certType = "host"
518
+ userOrHost = "host"
519
+ } else {
520
+ userOrHost = "user"
514
521
}
522
+ certificateType := fmt .Sprintf ("%s %s certificate" , parts [0 ], userOrHost ) // e.g. ecdsa-sha2-nistp256-cert-v01@openssh.com user certificate
515
523
m := map [string ]interface {}{
516
524
"serial" : cert .Serial ,
517
525
"principals" : cert .ValidPrincipals ,
518
526
"valid-from" : time .Unix (int64 (cert .ValidAfter ), 0 ).Format (time .RFC3339 ),
519
527
"valid-to" : time .Unix (int64 (cert .ValidBefore ), 0 ).Format (time .RFC3339 ),
520
- "certificate" : string ( mak ) ,
521
- "certificate-type" : certType ,
528
+ "certificate" : certificate ,
529
+ "certificate-type" : certificateType ,
522
530
}
523
531
fingerprint , err := sshutil .FormatFingerprint (mak , sshutil .DefaultFingerprint )
524
532
if err == nil {
525
- m ["public-key" ] = fingerprint
533
+ fpParts := strings .Split (fingerprint , " " )
534
+ if len (fpParts ) > 3 {
535
+ m ["public-key" ] = fmt .Sprintf ("%s %s" , fpParts [1 ], fpParts [len (fpParts )- 1 ])
536
+ }
526
537
}
527
538
rl .WithFields (m )
528
539
}
0 commit comments