2010-03-24 14 views
5

Rozumiem, że jeśli chcę używać uwierzytelniania w WCF, potrzebuję zainstalować certyfikat na moim serwerze, którego WCF użyje do zaszyfrowania danych przechodzących między moim serwerem a klientem.Certyfikat programisty kontra zakupiony certyfikat dla WCF

Do celów programistycznych uważam, że mogę używać makecert.exe util. aby wystawić certyfikat rozwoju.

Co jest najgorsze w przypadku , jeśli mogę użyć tego certyfikatu w środowisku produkcyjnym?

i ...

Dlaczego nie mogę korzystać z tego certyfikatu na środowisku produkcyjnym?

i ...

Czym jest certyfikat rzeczywiście zamiar zrobić w tej sytuacji?

[Edit: Dodano kolejne pytanie]

wreszcie ...

W sytuacji, w której strona posiada certyfikat zainstalowany w celu zapewnienia wsparcia HTTPS może być taki sam certyfikat używany dla usług WCF, jak również?

Uwaga na temat mojej aplikacji: jest to usługa klienta i serwera NetTCP. Użytkownicy będą się logować przy użyciu tej samej nazwy użytkownika i hasła, których używają dla strony internetowej, która jest przekazywana w postaci przejrzystego tekstu. Byłbym szczęśliwy, przekazując u/n + p/w w tekstach jawnych do WCF, ale nie jest to dozwolone przez ramy i certyfikat musi być na miejscu. Jednak nie chcę kupować certyfikatu ze względu na ograniczenia budżetowe!

(Przepraszam za prawdopodobnie głupie pytanie, ale naprawdę tego nie rozumiem, więc przyjmiemy z tego trochę pomocy).

Odpowiedz

9

Cóż, nic poważnego się nie stanie, jeśli użyjesz certyfikatu programisty w środowisku produkcyjnym, w końcu certyfikat jest certyfikatem, a szyfrowanie, które zapewnia, jest takie samo, jak każdy komercyjny certyfikat.

Jednakże, ponieważ certyfikat nie jest podpisany przez zaufany ośrodek certyfikacji, nie gwarantuje on klientowi, że jesteś Ty jesteś. Pozwolę sobie to ująć w inny sposób: jeśli twoja usługa byłaby prostą stroną internetową, przeglądarka powiedziałaby, że certyfikat jest nieważny.

Zaświadczenie o zapewnieniu SSL w serwerze sieciowym jest certyfikatem informującym klienta, że ​​domena jest zaufaną i zweryfikowaną domeną oraz że Urząd Certyfikacji może za nią ręczyć.

Tak więc, certyfikat złożony przez makecert.exe byłby taki sam jak wpisanie swojego nazwiska na kartce papieru i powiedzenie, powiedzmy urzędnikowi prawa, że ​​to prawo jazdy.

+0

Podoba mi się analogia prawa jazdy! Więc kiedy ubiegam się o certyfikat, CA odwiedza moją witrynę i jakoś udowodnić, że moja strona jest prawidłowa, a następnie wystawić certyfikat? – Remotec

+1

@ tak, nie, nie będzie odwiedzać Twojej witryny, ale może ręczyć, ponieważ tylko administrator witryny może zainstalować certyfikat. –

+0

Rozumiem. Ale co mnie powstrzyma przed zakupem certyfikatu na www.abc.com, a następnie zainstalowaniem go na www.xyz.com? Zakładam, że kiedy przeglądarka odwiedza witrynę, sprawdza, czy odwiedzana nazwa strony pasuje do nazwy certyfikatu? – Remotec

3

"Co jest najgorsze, co może się zdarzyć, jeśli korzystam z tego certyfikatu w środowisku produkcyjnym" Zabezpieczenia zakończą się niepowodzeniem, co spowoduje utratę całej usługi.

"Dlaczego nie mogę używać tego certyfikatu w środowisku produkcyjnym?"
Urząd certyfikacji określony w wygenerowanym certyfikacie nie jest znany klientom, dlatego certyfikat nie może zostać zatwierdzony/użyty.

"Jaki certyfikat zostanie faktycznie wystawiony w tym scenariuszu?" Klucz publiczny jest używany przez klientów do szyfrowania komunikacji. To Gwarantujemy, że tylko właściciel klucza prywatnego (serwera w tym przypadku) można odszyfrować go ponownie (keypairs prywatno-publiczne mają asymetryczny szyfrowanie)

Nadzieja to pomaga,

+0

Dzięki Marvin, więc na świecie jest tylko znana ilość urzędów certyfikacji, a certyfikat musi zostać wygenerowany przez jedną z nich? W jaki sposób moja usługa WCF wie o tym? Czy klient korzystający z aplikacji Windows Forms otrzyma błędy lub cokolwiek? (Po prostu próbuję zrozumieć, co * zdarzy się * w tym scenariuszu). – Remotec

+0

Ilość kopii zapasowych urzędów certyfikacji nie jest ustalona. Każdy może zostać urzędem certyfikacji (w rzeczywistości, gdy używasz makeCert.exe, jesteś CA tego certyfikatu). A więc, które ośrodki CA są znane? Są one instalowane w magazynie certyfikatów jako "będące urzędem certyfikacji". Jest to wstępnie zainstalowane podczas instalacji "systemu operacyjnego Windows" na przykład. CA są również "łańcuchami", np. CA # 1 może powiedzieć, że ufam CA # 2, tak jak sobie ufam. Umożliwia to dystrybucję urzędów certyfikacji na całym świecie. Możesz zrobić certyfikat, który jest certyfikatem CA. Będziesz musiał zainstalować ten certyfikat na wszystkich klientach jako zaufany urząd certyfikacji, a następnie możesz użyć swojego certyfikatu. –

4
  1. A potrzeby certyfikat do być wystawiane przez tak zwany Urząd Certyfikacji, aby być zaufanym. Certyfikaty samopodpisane (utworzone przez makecert itp.) Nie są zaufane, a każdy, kto przejdzie do Twojej witryny, otrzyma ostrzeżenie "Nieprawidłowy certyfikat" (dokładniej: "Certyfikat nie jest zaufany, ponieważ jest samopodpisany"). Tak więc, najgorszy przypadek, ludzie nie pójdą do Twojej witryny, ponieważ nie ufają jej.

  2. Możesz użyć certyfikatu z podpisem własnym w produkcji, ale nie jest to wskazane z powodów wyjaśnionych powyżej.

  3. Zaświadczenie służy do ustanowienia bezpiecznego połączenia (HTTPS) między klientem a serwerem. Oprócz tego ma to na celu zweryfikowanie tożsamości serwera. Nie można zagwarantować tożsamości serwera, jeśli certyfikat jest samopodpisany.

  4. W IIS, jeśli zainstalujesz certyfikat na stronie internetowej, wszystkie usługi WCF wdrożone w tej witrynie będą mogły korzystać z certyfikatu.

W skrócie, użyć certyfikatu z podpisem własnym rozwoju (poszukaj w narzędzie o nazwie SSL Diagnostics dla łatwego generowania certyfikatu w IIS), ale tak naprawdę nie używać certyfikatu produkcyjną do produkcji!

+0

+1 dla wskazówki diagnostyki SSL – bob