Проблема с Raku и SSL на Windows Machine - PullRequest
7 голосов
/ 31 октября 2019

Я только что установил perl6 на сервер Windows и Windows 7.

Я хочу перенести скрипт, который уже работает на openbsd, на компьютер с Windows.

Я протестировал этот код:

my $resp = await Cro::HTTP::Client.get('https://www.perl6.org/');

И я получу это на обеих машинах с Windows:

C:\Users\Matthias\CommaProjects\testing>perl6 cro.pl6
Tried to get the result of a broken Promise
  in block  at C:\rakudo\share\perl6\site\sources\0609EA0BB03C70C2C15DB4B144D704
1C1059D14C (Cro::TLS) line 108

Original exception:
    An operation first awaited:
      in block  at C:\rakudo\share\perl6\site\sources\A4ECA701FE96A8456AEB83692D
6B3C55AAFC964C (IO::Socket::Async::SSL) line 322

    Died with the exception:
        Server certificate verification failed: unable to get local issuer certificate
          in block  at C:\rakudo\share\perl6\site\sources\A4ECA701FE96A8456AEB83
692D6B3C55AAFC964C (IO::Socket::Async::SSL) line 322

Может кто-нибудь подсказать, как запустить это?

Редактировать: У меня естьтакже проверил WWW с TLS, который работает хорошо:

use WWW;
say get 'https://httpbin.org/get?foo=42&bar=x', :SomeHeader<Value>;

Ответы [ 2 ]

4 голосов
/ 04 ноября 2019

Похоже, поддержка windows еще не полностью реализована в кро. Но, похоже, он запланирован на будущие выпуски в соответствии с дорожной картой . По крайней мере одна из зависимостей cro также имеет проблему при использовании с windows IO :: Path :: ChildSecure .

В качестве обходного пути в настоящий момент вы можете попробовать использовать cacert.pem из проекта curl, помещенного в текущий рабочий каталог вместе с вашим кодом:

use Cro::HTTP::Client;

#cacert.pem from https://curl.haxx.se/docs/caextract.html
constant %ca := { ca-file => 'cacert.pem' };
my $resp = await Cro::HTTP::Client.get('https://www.perl6.org/', :%ca);
say await $resp.body;
2 голосов
/ 04 ноября 2019

Подтверждено, что в соответствующей библиотеке есть некоторые проблемы. Так что я думаю, что этот канал можно рассматривать как решенный. Дальнейшее обсуждение будет происходить на github-пространстве библиотеки:

https://github.com/jnthn/p6-io-socket-async-ssl/

Большое спасибо Джонатану!

...