🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
8 messages
8 total messages Started by Andrzej Adam Filip Wed, 01 Jul 2009 19:44
IO::Socket::SSL i finerprint klucza serwera
#51490
Author: Andrzej Adam Filip
Date: Wed, 01 Jul 2009 19:44
11 lines
1414 bytes
Czy ktoś może zasugerować jak uzyskać uchwyt (handle) do połączenia SSL
z możliwością sprawdzenia "odciska palca" klucza używanego przez serwer?

Chce się łączyć z serwisem który używa samodzielnie generowanych kluczy
i sprawdzanie przez Certification Authority zawsze "padnie".

-- 
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Ze wszystkiego, co ma człowiek, najlepsza jest źrenica,
gdyż nie ukrywa tego, co w człowieku złe.
  -- Mencjusz (371-ok. 289 p.n.e.)
Re: IO::Socket::SSL i finerprint klucza serwera
#51491
Author: Stachu 'Dozzie' K.
Date: Wed, 01 Jul 2009 20:03
17 lines
1515 bytes
On 01.07.2009, Andrzej Adam Filip wrote:
> Czy ktoś może zasugerować jak uzyskać uchwyt (handle) do połączenia SSL
> z możliwością sprawdzenia "odciska palca" klucza używanego przez serwer?
>
> Chce się łączyć z serwisem który używa samodzielnie generowanych kluczy

Klucze zawsze są generowane przez stronę serwującą usługę. Mówisz
o certyfikatach.

> i sprawdzanie przez Certification Authority zawsze "padnie".

Zawsze zawiedzie? Jeśli to certyfikaty tupu self-signed, to wystarczy
dodać sam certyfikat do CAfile/CApath. Jeśli to certyfikaty wydane przez
własne CA, to lepiej poproś o certyfikat tamtego CA.

-- 
Stanislaw Klekot
Re: IO::Socket::SSL i finerprint klucza serwera
#51493
Author: Andrzej Adam Filip
Date: Wed, 01 Jul 2009 20:27
23 lines
1971 bytes
"Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam> pisze:

> On 01.07.2009, Andrzej Adam Filip wrote:
>> Czy ktoś może zasugerować jak uzyskać uchwyt (handle) do połączenia SSL
>> z możliwością sprawdzenia "odciska palca" klucza używanego przez serwer?
>>
>> Chce się łączyć z serwisem który używa samodzielnie generowanych kluczy
>
> Klucze zawsze są generowane przez stronę serwującą usługę. Mówisz
> o certyfikatach.
>
>> i sprawdzanie przez Certification Authority zawsze "padnie".
>
> Zawsze zawiedzie? Jeśli to certyfikaty tupu self-signed, to wystarczy
> dodać sam certyfikat do CAfile/CApath. Jeśli to certyfikaty wydane przez
> własne CA, to lepiej poproś o certyfikat tamtego CA.

Ja jestem zainteresowany akceptowaniem tylko certyfikatu jednego serwera.

-- 
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Kto ziarno sieje, ten przed burzą zwieje.
  -- Przysłowie polskie (pl.wikiquote.org)
Re: IO::Socket::SSL i finerprint klucza serwera
#51494
Author: Stachu 'Dozzie' K.
Date: Wed, 01 Jul 2009 20:36
27 lines
2104 bytes
On 01.07.2009, Andrzej Adam Filip wrote:
> "Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam> pisze:
>
>> On 01.07.2009, Andrzej Adam Filip wrote:
>>> Czy ktoś może zasugerować jak uzyskać uchwyt (handle) do połączenia SSL
>>> z możliwością sprawdzenia "odciska palca" klucza używanego przez serwer?
>>>
>>> Chce się łączyć z serwisem który używa samodzielnie generowanych kluczy
>>
>> Klucze zawsze są generowane przez stronę serwującą usługę. Mówisz
>> o certyfikatach.
>>
>>> i sprawdzanie przez Certification Authority zawsze "padnie".
>>
>> Zawsze zawiedzie? Jeśli to certyfikaty tupu self-signed, to wystarczy
>> dodać sam certyfikat do CAfile/CApath. Jeśli to certyfikaty wydane przez
>> własne CA, to lepiej poproś o certyfikat tamtego CA.
>
> Ja jestem zainteresowany akceptowaniem tylko certyfikatu jednego serwera.

To to się robi callbackiem oceniającym akceptowalność certyfikatu
drugiej strony (tj. sprawdza poprawność atrybutu commonName). Co rzecz
jasna zakłada zaufanie wobec certificate authority. Sorry, Winetou,
that's the way X.509 works.

-- 
Stanislaw Klekot
Re: IO::Socket::SSL i finerprint klucza serwera
#51495
Author: Andrzej Adam Filip
Date: Wed, 01 Jul 2009 20:44
33 lines
2548 bytes
"Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam> pisze:

> On 01.07.2009, Andrzej Adam Filip wrote:
>> "Stachu 'Dozzie' K." <dozzie@dynamit.im.pwr.wroc.pl.nospam> pisze:
>>
>>> On 01.07.2009, Andrzej Adam Filip wrote:
>>>> Czy ktoś może zasugerować jak uzyskać uchwyt (handle) do połączenia SSL
>>>> z możliwością sprawdzenia "odciska palca" klucza używanego przez serwer?
>>>>
>>>> Chce się łączyć z serwisem który używa samodzielnie generowanych kluczy
>>>
>>> Klucze zawsze są generowane przez stronę serwującą usługę. Mówisz
>>> o certyfikatach.
>>>
>>>> i sprawdzanie przez Certification Authority zawsze "padnie".
>>>
>>> Zawsze zawiedzie? Jeśli to certyfikaty tupu self-signed, to wystarczy
>>> dodać sam certyfikat do CAfile/CApath. Jeśli to certyfikaty wydane przez
>>> własne CA, to lepiej poproś o certyfikat tamtego CA.
>>
>> Ja jestem zainteresowany akceptowaniem tylko certyfikatu jednego serwera.
>
> To to się robi callbackiem oceniającym akceptowalność certyfikatu
> drugiej strony (tj. sprawdza poprawność atrybutu commonName). Co rzecz
> jasna zakłada zaufanie wobec certificate authority. Sorry, Winetou,
> that's the way X.509 works.

Mnie interesuje funkcjonalność którą oferuje *wiele* programów np. fetchmail.

-- 
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Wielcy lunatycy nie potrzebują księżyca.
  -- Lec, Stanisław Jerzy (1909-1966)
Re: IO::Socket::SSL i finerprint klucza serwera
#51496
Author: Adam Osuchowski
Date: Sun, 05 Jul 2009 22:57
35 lines
2375 bytes
Stachu 'Dozzie' K. wrote:
> To to się robi callbackiem oceniającym akceptowalność certyfikatu
> drugiej strony (tj. sprawdza poprawność atrybutu commonName).

Niekoniecznie tylko CN. Callback dostaje wskaźnik na wszystkie
certyfikaty ze ścieżki wysłane przez serwer, można więc sprawdzić co się
chce, nawet czy numer seryjny jest liczbą pierwszą.

> Sorry, Winetou, that's the way X.509 works.

Nie sądzę. To raczej kwestia niedopracowanych aplikacji, których autorzy
idąc po najmniejszej linii oporu, dają możliwość wyłącznie sprawdzania
ścieżki zaufania od podanego certyfikatu CA. Nie widzę powodów dla
których klient SSL/TLS nie mógłby weryfikować certyfikatów na podstawie
podanej listy ich fingerprintów, całej ich zawartości albo jeszcze
czegoś innego. Skoro PGP i SSH to potrafią, X.509 również powinno,
zwłaszcza, że sam protokół ani OpenSSL nie stoją tu na przeszkodzie.

Co do samego rozwiązania:

#v+
use strict;
use IO::Socket::SSL;
use Net::SSLeay;

my $client = new IO::Socket::SSL(
    PeerAddr => 'www.example.com',
    PeerPort => 443,
    SSL_verify_callback => sub {
      print Net::SSLeay::PEM_get_string_X509(Net::SSLeay::X509_STORE_CTX_get_current_cert($_[1]));
    });
#v-

Da Ci to string z połączonymi certyfikatami w formacie PEM zwróconymi przez
serwer. A z tym możesz już zrobić co chcesz.
Re: IO::Socket::SSL i finerprint klucza serwera
#51497
Author: Andrzej Adam Filip
Date: Mon, 06 Jul 2009 16:30
45 lines
2934 bytes
Adam Osuchowski <someone@somewhere.com> pisze:

> Stachu 'Dozzie' K. wrote:
>> To to się robi callbackiem oceniającym akceptowalność certyfikatu
>> drugiej strony (tj. sprawdza poprawność atrybutu commonName).
>
> Niekoniecznie tylko CN. Callback dostaje wskaźnik na wszystkie
> certyfikaty ze ścieżki wysłane przez serwer, można więc sprawdzić co się
> chce, nawet czy numer seryjny jest liczbą pierwszą.
>
>> Sorry, Winetou, that's the way X.509 works.
>
> Nie sądzę. To raczej kwestia niedopracowanych aplikacji, których autorzy
> idąc po najmniejszej linii oporu, dają możliwość wyłącznie sprawdzania
> ścieżki zaufania od podanego certyfikatu CA. Nie widzę powodów dla
> których klient SSL/TLS nie mógłby weryfikować certyfikatów na podstawie
> podanej listy ich fingerprintów, całej ich zawartości albo jeszcze
> czegoś innego. Skoro PGP i SSH to potrafią, X.509 również powinno,
> zwłaszcza, że sam protokół ani OpenSSL nie stoją tu na przeszkodzie.
>
> Co do samego rozwiązania:
>
> #v+
> use strict;
> use IO::Socket::SSL;
> use Net::SSLeay;
>
> my $client = new IO::Socket::SSL(
>     PeerAddr => 'www.example.com',
>     PeerPort => 443,
>     SSL_verify_callback => sub {
>       print Net::SSLeay::PEM_get_string_X509(Net::SSLeay::X509_STORE_CTX_get_current_cert($_[1]));
>     });
> #v-
>
> Da Ci to string z połączonymi certyfikatami w formacie PEM zwróconymi przez
> serwer. A z tym możesz już zrobić co chcesz.

Dzięki - z tego da się już zrobić to o co mi chodzi.
W ramach upraszczania: czy da się to dostać w formacie binarnym?

-- 
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Okno na świat można zasłonić gazetą.
  -- Lec, Stanisław Jerzy (1909-1966)
Re: IO::Socket::SSL i finerprint klucza serwera
#51498
Author: Adam Osuchowski
Date: Mon, 06 Jul 2009 17:29
18 lines
1574 bytes
Andrzej Adam Filip wrote:
> W ramach upraszczania: czy da się to dostać w formacie binarnym?

No przecież to zwykły base64 jest, więc w czym problem?

#v+
use MIME::Base64;

my $certs = Net::SSLeay::PEM_get_string_X509(Net::SSLeay::X509_STORE_CTX_get_current_cert($_[1]));

while ($certs =~ m/-----BEGIN( CERTIFICATE-----)(.*?)-----END\1/sg) {
  print decode_base64($2);
}
#v-

Pewnie jest jakiś kolejny wysoce specjalizowany moduł na CPANie, którego
jedynym zadaniem jest konwersja PEM-to-DER, ale najszybciej to chyba
obrobić po prostu regexpem i MIME::Base64.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads