Autor Téma: webová služba s https  (Přečteno 2032 krát)

Offline IBAG2008

  • Nováček
  • *
  • Příspěvků: 21
  • Karma: 0
    • Verze Delphi: D6,D7,2010,XE5
webová služba s https
« kdy: 13-01-2014, 23:51:11 »
V Delphi XE5 se snažím vytvořit SOAP server zabezpečený certifikátem. Postupuju ,přes průvodce File->New->Other->SOAP server application... zadám port , zaškrtnu https vyberu certifikát key a zadám heslo, vše bez problému. Nechám to vygenerovat vytvořím metodu HelloWorld .. zkompiluju a spustím. Server se spustí dám otevřít adresu https://localhost:4434 stránka s popisem služby se načte, ale když máčknu na vygenerovaný odkaz [WSDL] nastane exception:
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
pokud použiju jiný SSL options v create,

Kód: Delphi [Vybrat]
  1. LIOHandleSSL.SSLOptions :=[sslvSSLv2,sslvSSLv3,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];

tak se pouze mění ty exceptiony: SSL3, nebo SSL2 nebo sem tam něco jiného
Poraďte někdo co s tím .. zkoušel jsem několik certifikátů, několik browserů, ale žádnej pokrok vpřed. Pokud to vygeneruju bez https tak to všechno jede ok ale takhle mi to nejde.
Ještě bych byl ochoten vynechat https a použít autentifikaci na úrovni toho webového serveru, ale tam nevím jak to vynutit a kde zadat jméno a heslo v definici toho serveru v projektu. Pokud mám SOAP klienta tak pro volání serveru s autentifikací nastavím jméno a heslo v modulu vygenerovaném při importu wsdl souboru, ale kde mám nastavit jméno a heslo u toho SOAP serveru jsem bohužel nevygooglil. Díky za každé nakopnutí.

Kód: Delphi [Vybrat]
  1. RIO := THTTPRIO.Create(nil)
  2.   else
  3.     RIO := HTTPRIO;
  4.   try
  5.     Result := (RIO as WebServiceSoap);
  6.     if UseWSDL then
  7.     begin
  8.       RIO.WSDLLocation := Addr;
  9.       RIO.HTTPWebNode.UserName := 'xxxx';
  10.       RIO.HTTPWebNode.Password := 'zzzz';
  11.       RIO.Service := defSvc;
  12.       RIO.Port := defPrt;
  13.  

   

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1715
  • Karma: 70
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:webová služba s https
« Odpověď #1 kdy: 14-01-2014, 20:01:48 »
hmm podle internetu:

It's a known issue. The latest snapshots could fix it, or apply this patch to
1.0.1c: http://cvs.openssl.org/chngview?cn=22565

tj. novější openssl nebo

In Indy 10, you do that by setting the TIdSMTP.UseTLS property to utUseExplicitTLS before connecting. It sounds like you have the UseTLS property set to utUseImplicitTLS (napsal autor Indy) http://stackoverflow.com/questions/9162788/ssl-support-for-smtp-live-com-and-tidsmtp-indy-delphi
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1715
  • Karma: 70
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:webová služba s https
« Odpověď #2 kdy: 14-01-2014, 22:24:46 »
hádám, že novější verzi openssl zde http://indy.fulgan.com/SSL/
Embarcadero MVP - Czech republic

Offline IBAG2008

  • Nováček
  • *
  • Příspěvků: 21
  • Karma: 0
    • Verze Delphi: D6,D7,2010,XE5
Re:webová služba s https
« Odpověď #3 kdy: 15-01-2014, 13:49:46 »
Tak vidím, že nic neumím  >:(

všechny příspěvky na toto téma na webu se týkají smtp klientů, a tam v komponentě IdSMTP je opravdu možné nastavit property useTLS na požadovanou hodnotu utUseExplicitTLS . Jak a kde toto nastavení ale přidat v případě vygenrovaného SOAP serveru ? trápím se tu s tím a nic mne nenapadá. Ve vygenerovaném formu je pouze:

Kód: Delphi [Vybrat]
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3.   LIOHandleSSL: TIdServerIOHandlerSSLOpenSSL;
  4. begin
  5.   FServer := TIdHTTPWebBrokerBridge.Create(Self);
  6.   LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
  7.   LIOHandleSSL.SSLOptions.CertFile := 'cesta k certifikatu';
  8.   LIOHandleSSL.SSLOptions.RootCertFile := '';
  9.   LIOHandleSSL.SSLOptions.KeyFile := 'cesta ke key';
  10.   LIOHandleSSL.OnGetPassword := OnGetSSLPassword;
  11.   FServer.IOHandler := LIOHandleSSL;
  12. end;
  13.  
  14. procedure TForm1.StartServer;
  15. begin
  16.   if not FServer.Active then
  17.   begin
  18.     FServer.Bindings.Clear;
  19.     FServer.DefaultPort := StrToInt(EditPort.Text);
  20.     FServer.Active := True;
  21.   end;
  22. end;
  23.  

a následně na WebModuleUnit1 je komponenta:
   HTTPSoapDispatcher1
   HTTPSoapPascalInvoker1
   WSDLHTMLPublish1

ale nikde v nich ani v:
   TIdServerIOHandlerSSLOpenSSL;
   TIdHTTPWebBrokerBridge;
   

jsem nenašel možnost tuto property nastavit. Takže aktuálně je otázka kde nastavit useTLS ? a následně stále nevím jak vyžadovat od připojených klientů autorizaci pomocí jména a hesla. Nakopnete mě ještě trochu ?



Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1788
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:webová služba s https
« Odpověď #4 kdy: 15-01-2014, 14:12:25 »
Tak vidím, že nic neumím  >:(
Zkus se zeptat na Stack Overflow - prece jenom to tam cte vic lidi a nekteri opravdu umi.

Se serverem ti neporadim, protoze jsme pred lety dosli k nazoru, ze Delphi jako SOAP server ne a u klienta jsem unit SoapHTTPTrans upravil pro Synapse a nas framework.


Offline SaLIk

  • Mladík
  • **
  • Příspěvků: 71
  • Karma: 1
    • Verze Delphi: 2010, 10 (Seattle)
    • salikovi.cz
Re:webová služba s https
« Odpověď #5 kdy: 06-03-2017, 11:49:24 »
V Delphi XE5 se snažím vytvořit SOAP server zabezpečený certifikátem. Postupuju ,přes průvodce File->New->Other->SOAP server application... zadám port , zaškrtnu https vyberu certifikát key a zadám heslo, vše bez problému. Nechám to vygenerovat vytvořím metodu HelloWorld .. zkompiluju a spustím. Server se spustí dám otevřít adresu https://localhost:4434 stránka s popisem služby se načte, ale když máčknu na vygenerovaný odkaz [WSDL] nastane exception:
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

Je to sice už offtopic, ale stejnou věc jsem řešil v D10. U mě problém byl v nastavení komponenty WSDLHTMLPublishMain, která je na TWebModule. Pro HTTPS musí mít nastaven option poPublishLocationAsSecure, jinak se odkazy špatně generují.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):