Co byłoby najbardziej „standardowy” sposób uwierzytelniania każdego serwera przed sobą? Myślę OAuth, zakładając, że każda maszyna ma własnego użytkownika OAuth - ale nie jestem pewien, czy jest to właściwy wzór do naśladowania.
Uwierzytelnianie maszyn nie różni się od uwierzytelniania użytkowników. Obaj są podmiotami zabezpieczeń. W rzeczywistości Microsoft stworzył maszyny najwyższej klasy obywatelem w systemie Windows 2000. Mogą one być głównymi użytkownikami zabezpieczonych obiektów, takich jak pliki i foldery, tak jak zwykli użytkownicy.
(Istnieje pewne machnięcie ręką, ponieważ serwery zwykle cierpią na problem z nienadzorowanym przechowywaniem kluczy opisany przez Gutmann w jego książce Engineering Security).
Chciałbym użyć prywatnego PKI (tj. Być moim własnym organem certyfikującym) i korzystać z wzajemnego uwierzytelniania na podstawie par kluczy publicznych/prywatnych, takich jak SSL/TLS. Ma to dodatkową zaletę ponownego wykorzystania dużej ilości infrastruktury, więc HTTP/HTTPS/REST "po prostu działa" tak jak zawsze.
Jeśli używasz Prywatna PKI, wydawania certyfikatów dla maszyn, które obejmują następujący klucz Zastosowanie:
- Podpis cyfrowy (Wykorzystanie Key)
- Key Szyfrowanie (Wykorzystanie Key)
- Umowa klawisz (Key Usage)
- Web Client Authentication (Extended Key Usage)
- Web Server Authentication (Extended Key Usage)
Można też uruchomić prywatną PKI i zezwalać tylko na komunikację między serwerami za pomocą sieci VPN na podstawie infrastruktury PKI. Nadal można tunelować żądania RESTful, a żadne inne nie będą w stanie nawiązać połączenia VPN z jednym z serwerów. Dostajesz filtry IP za darmo.
Lub użyj protokołu w stylu Kerberos z centrum dystrybucji kluczy. Będziesz potrzebować całej infrastruktury Kerberos, w tym KDC. Skonfiguruj bezpieczne kanały na podstawie sekretów przetwarzanych przez KDC.
Lub użyj systemu SSH, par kluczy publicznych/prywatnych i sieci sneaker-net, aby skopiować klucze publiczne peer'a do siebie nawzajem. Zezwalaj tylko na połączenia z komputerów, których klucze publiczne posiadasz.
Prawdopodobnie nie użyłbym systemu podobnego do OAuth. W systemie podobnym do OAuth będziesz zarówno dostawcą, jak i stroną ufającą. W takim przypadku możesz równie dobrze być urzędem certyfikacji i ponownie użyć wszystkiego z SSL/TLS.
Czy oznacza to, że klient i serwer mają własny certyfikat (samopodpisany)? Czy zabezpieczenia są naruszane, gdy certyfikaty są w tym przypadku podpisywane automatycznie? – Joyce