Re: Error with SSL certificates and SSL Filter
Darío Rodríguez <[email protected]> Tue, 24 May 2011 13:09:05 +0200
| Newsgroups | gmane.comp.lang.perl.poe |
|---|---|
| Message-ID | <[email protected]> |
Hi Markus,
I tried your example and the result was the same error. I thought that
there was a problem with the server because even with your script I
didn't see any screen on the server to accept the certificate.
My problem is that the browser enters in a infinite loop after the page
request. And no page related to any certificate is shown. I am usgin
Firfox 3.0.17 and the certificate with apache went fine, the screen
appeared and I could accept the certificate.
Does It make sense? Do I forgot something, maybe a parameter of the filter?
Regards and thank you for the help.
Dario.
On 24/05/11 12:35, Markus Müller wrote:
> Hi Dario,
>
> I am also using untrusted certificates. There is no issue on server at
> all for that, only on client side. You have to accept the certificate
> in the browser, the server don't do anything about that. I just don't
> understand why you think it could be anything about untrusted
> certificates... Everything I mentioned is that in my test the message
> only occures if I connect with a browser which aborts the connection
> cause the certificate is not accepted by the client (= the browser).
>
> What exactly is your problem? Maybe your browser don't allow untrusted
> certificates from a proxy server?
>
> Did you try my example? It makes a https server and not a https proxy.
> Please try if http server works, maybe you just have a problem in your
> browser about poxying and untrusted certificates.
>
> Regards,
> Markus Mueller
>>
>> You are right Markus, I am using a unstrusted certificate. Is there
>> any way to use the SSL filter with untrusted certificates? I know
>> other libs like LWP can deal with them.
>>
>> If this is a TODO or a bug I can help you fixing this on the POE SSL
>> Filter code :)
>>
>> Regards,
>>
>> Dario.
>>
>> On 24/05/11 11:35, Andy Jenkinson wrote:
>>> When doing something similar, I seem to remember I got this error
>>> when attempting to connect via HTTP too. I could be making that up
>>> though.
>>>
>>> Cheers,
>>> Andy
>>>
>>> On 24 May 2011, at 10:07, Markus Müller wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I've tried the following program and it works under Debian Squeeze.
>>>>
>>>> The message "POE::Filter::SSL: UNEXPECTED ERROR: ERR1:0 ERR2:1
>>>> HINT: Check if you have configured a CRT and KEY file, and that
>>>> both are readable at /usr/share/perl5/POE/Wheel/ReadWrite.pm line
>>>> 280" occures in my test only if the browser aborts the connection
>>>> during SSL handshake because the certificate is untrusted. In any
>>>> other case I can see the data the server is returning.
>>>>
>>>> Dieser Verbindung wird nicht vertraut
>>>>
>>>> Sie haben Firefox angewiesen, eine gesicherte Verbindung zu
>>>> saytest.priv.de:82 aufzubauen, es kann aber nicht überprüft werden,
>>>> ob die Verbindung sicher ist. Wenn Sie normalerweise eine
>>>> gesicherte Verbindung aufbauen, weist sich die Website mit einer
>>>> vertrauenswürdigen Identifikation aus, um zu garantieren, dass Sie
>>>> die richtige Website besuchen. Die Identifikation dieser Website
>>>> dagegen kann nicht bestätigt werden.
>>>>
>>>> Was sollte ich tun?
>>>>
>>>> Falls Sie für gewöhnlich keine Probleme mit dieser Website haben,
>>>> könnte dieser Fehler bedeuten, dass jemand die Website fälscht. Sie
>>>> sollten in dem Fall nicht fortfahren.
>>>>
>>>> Much regards,
>>>> Markus Mueller
>>>>
>>>> #!perl
>>>>
>>>> use strict;
>>>> use warnings;
>>>> use Socket;
>>>> use POE qw(
>>>> Wheel::SocketFactory
>>>> Wheel::ReadWrite
>>>> Driver::SysRW
>>>> Filter::SSL
>>>> Filter::Stackable
>>>> Filter::HTTPD
>>>> Component::Server::TCP
>>>> );
>>>> POE::Component::Server::TCP->new(
>>>> Alias => "web_server",
>>>> Port => 82,
>>>> #ClientFilter => 'POE::Filter::HTTPD', ##WITHOUT HTTPD FILTER
>>>> THERE ISN'T HTTP HEADERS!!!
>>>> ClientFilter => POE::Filter::Stackable->new(
>>>> Filters => [
>>>> POE::Filter::SSL->new(crt => 'sslkeys/server.crt', key
>>>> => 'sslkeys/server.key'),
>>>> POE::Filter::HTTPD->new(),
>>>> ]
>>>> ),
>>>>
>>>> ClientInput => \&handle_http_request,
>>>> InlineStates => {got_response => \&handle_http_response,},
>>>> );
>>>>
>>>> sub handle_http_request {
>>>> my ($kernel, $session, $heap, $buf) = @_[KERNEL, SESSION, HEAP,
>>>> ARG0];
>>>> my $content .= "Your URL was: ".$buf->uri."<hr>"
>>>> if (ref($buf) eq "HTTP::Request");
>>>> $content .= localtime(time());
>>>> my $response = HTTP::Response->new(200);
>>>> $response->push_header('Content-type', 'text/html');
>>>> $response->content($content);
>>>> $_[HEAP]{client}->put($response);
>>>> $_[KERNEL]->yield("shutdown");
>>>> };
>>>>
>>>> POE::Kernel->run;
>>>> exit;
>>>>
>>>>> I am making a proxy and it must support the https protocol. I am
>>>>> trying to enable SSL feature in the server side with this command:
>>>>>
>>>>> POE::Component::Server::TCP->new(
>>>>> Alias => "web_server",
>>>>> Port => LISTEN_PORT,
>>>>> #ClientFilter => 'POE::Filter::HTTPD', ##WITHOUT HTTPD FILTER
>>>>> THERE ISN'T HTTP HEADERS!!!
>>>>> ClientFilter => POE::Filter::Stackable->new(
>>>>> Filters => [
>>>>> POE::Filter::SSL->new(crt => 'sslkeys/server.crt',
>>>>> key =>
>>>>> 'sslkeys/server.key'),
>>>>> POE::Filter::HTTPD->new(),
>>>>> ]
>>>>> ),
>>>>>
>>>>> ClientInput => \&handle_http_request,
>>>>> InlineStates => {got_response => \&handle_http_response,},
>>>>> );
>>>>>
>>>>> But when a https request hit the server I get the following error:
>>>>>
>>>>> POE::Filter::SSL: UNEXPECTED ERROR: ERR1:-1 ERR2:1 HINT: Check if you
>>>>> have configured a CRT and KEY file, and that both are readable at
>>>>> /usr/share/perl5/POE/Wheel/ReadWrite.pm line 280
>>>>>
>>>>>
>>>>> I don't know what this error means because the files has the
>>>>> permission flags set to 777. Are required some special certs?
>>>>>
>>>>> Thanks in advance.
>>
>>