package tlscert import ( "crypto/tls" "testing" ) func TestConfig_HardenedDefaults(t *testing.T) { cert, err := GenerateSelfSigned("127.0.0.1") if err != nil { t.Fatalf("testzertifikat erzeugen: %v", err) } store := NewStore(cert) cfg := store.Config() if cfg.MinVersion < tls.VersionTLS12 { t.Fatalf("erwartete mindestens TLS 1.2, habe: 0x%04x", cfg.MinVersion) } for _, id := range cfg.CipherSuites { for _, weak := range []uint16{ tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, tls.TLS_RSA_WITH_AES_128_CBC_SHA, tls.TLS_RSA_WITH_AES_256_CBC_SHA, } { if id == weak { t.Fatalf("schwache cipher-suite in gehärteter config gefunden: 0x%04x", id) } } } if len(cfg.CipherSuites) == 0 { t.Fatalf("erwartete explizite cipher-suite-liste, habe keine") } } // TestStore_ReplaceAffectsOnlyNewHandshakes ist die geforderte // Pflichtprüfung 3 (ING-06) auf Store-Ebene: nach Replace liefert // GetCertificate sofort das neue Zertifikat für neue Handshakes. func TestStore_ReplaceAffectsOnlyNewHandshakes(t *testing.T) { certA, err := GenerateSelfSigned("127.0.0.1") if err != nil { t.Fatalf("zertifikat a erzeugen: %v", err) } certB, err := GenerateSelfSigned("127.0.0.1") if err != nil { t.Fatalf("zertifikat b erzeugen: %v", err) } store := NewStore(certA) got, err := store.GetCertificate(nil) if err != nil { t.Fatalf("GetCertificate: %v", err) } if string(got.Certificate[0]) != string(certA.Certificate[0]) { t.Fatalf("erwartete zertifikat a vor dem wechsel") } store.Replace(certB) got, err = store.GetCertificate(nil) if err != nil { t.Fatalf("GetCertificate nach Replace: %v", err) } if string(got.Certificate[0]) != string(certB.Certificate[0]) { t.Fatalf("erwartete zertifikat b nach dem wechsel") } }