Niedawno kupiliśmy certyfikat SSL z wieloznacznymi danymi dla naszej domeny. Przekształciliśmy wszystkie certyfikaty w magazyn kluczy Java, ale teraz zadajemy sobie pytanie, gdzie powinniśmy je przechowywać do późniejszego wykorzystania.
Czy ludzie używają kontroli źródła, takiej jak BitBucket, do tego rodzaju plików, czy po prostu generują za każdym razem, gdy jest to potrzebne, czy coś innego?
Zastanawiamy się, czy istnieje standardowe rozwiązanie lub jakieś „najlepsze praktyki” dotyczące przechowywania tych certyfikatów do przyszłego użytku.
ssl-certificate
certificate
best-practices
AmericanKryptonite
źródło
źródło
Odpowiedzi:
Istnieje wiele rozwiązań:
Jedna aleja to konkretna przechowalnia kluczy albo sprzęt oparty na sprzęcie, moduł bezpieczeństwa sprzętowego lub ekwiwalent programowy.
Innym jest po prostu odwołanie starego klucza i wygenerowanie nowej pary kluczy prywatny / publiczny, gdy pojawi się sytuacja. To nieco zmienia problem z utrzymywania bezpieczeństwa klucza na zabezpieczenie nazwy użytkownika / hasła konta u dostawcy certyfikatu i procedur ponownego wystawienia. Zaletą jest to, że większość organizacji ma już uprzywilejowane rozwiązanie do zarządzania kontami, np. 1 2
Istnieje wiele sposobów przechowywania w trybie off-line, od wydrukowania kopii klucza prywatnego i publicznego, w tym hasła (ale będzie to pies do przywrócenia), po zwykłe przechowywanie ich na nośnikach cyfrowych przeznaczonych do długotrwałego przechowywania. .
Naprawdę złymi miejscami są GitHub, Twój zespół WiKi lub udział sieciowy (i masz pomysł).
Aktualizacja 2015/4/29: Keywhiz również wydaje się interesującym podejściem.
źródło
Nie, certyfikaty SSL nie podlegają kontroli źródła, przynajmniej nie części klucza prywatnego.
Traktuj je jak hasło. Nasze są przechowywane tak samo jak nasze hasła - w KeePass. Pozwala na załączanie plików i jest szyfrowany.
źródło
Jeśli poddasz klucz prywatny kontroli źródła, każdy, kto ma do niego dostęp, będzie mógł podszyć się pod twój serwer. Jeśli twój serwer nie używa PFS (idealna tajemnica przekazywania), możliwe jest również odszyfrowanie przechwyconego ruchu SSL za pomocą powszechnie dostępnych narzędzi open source, takich jak Wireshark.
Możesz zabezpieczyć klucz za pomocą szyfrowania DES lub AES za pomocą hasła przy użyciu OpenSSL. OpenSSL jest dostępny dla systemów Linux, OSX i Windows.
OpenSSL może również usunąć hasło, gdy hasło jest niewygodne (np. Na serwerze internetowym, który uruchamia się automatycznie, ale nie obsługuje automatycznego wprowadzania haseł).
Dodanie hasła przy użyciu szyfrowania AES (bezpieczniejsze niż DES): -
Usuwanie hasła (pojawi się monit o podanie hasła): -
źródło
Inną opcją, po przeczytaniu o KeyWhiz, była Krypta HashiCorp. To nie tylko menedżer haseł, ale sklep Secrets, uważam, że jest trochę podobny do KeyWhiz. Jest napisany w GO, a klient działa również jako serwer i łączy się z wieloma backendami i metodami uwierzytelniania. Vault jest również oprogramowaniem typu open source, z opcją Enterprise.
Ponieważ klucze i certyfikaty SSL są tylko plikami tekstowymi, można je zakodować w standardzie base64 i zapisać jako ciąg znaków w Vault, a nawet sam tekst w Vault. Nie ma interfejsu WebUI ani graficznego interfejsu użytkownika, a wszystkie jego wiersze poleceń lub skrypty są sterowane i ma bardzo dobry, stabilny interfejs API sieci Web do uruchomienia.
źródło
Polecam zajrzeć do HSM offline (takiego jak token szyfrujący sprzęt lub CAC), aby przechowywać klucz prywatny i certyfikat. To nie tylko chroni klucz prywatny przed przypadkowym naruszeniem, ale także zapewnia pewne podstawowe odciążenie kryptograficzne.
Jeśli masz więcej zasobów kryptograficznych do zarządzania, zaleciłbym zapoznanie się z oprogramowaniem Enterprise Key & Certificate Management, które może zautomatyzować odnawianie, śledzić cykl życia, zautomatyzować przydzielanie do punktów końcowych itp. Większość z nich przechowuje zasób zaszyfrowany w spoczynku jako CLOB w bazie danych.
źródło