[SOLVED] ERROR: Can't verify SSL peers without knowing which Certificate Authorities to trust
#1
I seem to have broken my install of Get_Iplayer as a result of relocating my User folder and I'm hoping that someone may be able to help me out.

The problem that I'm having is that get_iplayer is not downloading the schedule pages correctly. When refreshing the cache I get the following:

WARNING: Failed to download schedule page: http://www.bbc.co.uk/bbcalba/programmes/.../this_week

I've read on a previous post that this is associated with the requirement to use https: rather than http: and that obsolete Perl modules could give problems. Unfortunately I'm nowhere near well enough versed in Perl to be able to sort out what's going on. I've deleted and reinstalled multiple times (using HomBrew) but can't seem to get to a working configuration.

I've listed below information that will hopefully help with diagnosing my problem.

Operating System: Sierra 10.12.6
Get_Iplayer: 3.12-Homebrew

Perl Summary:
 

get_iplayer Output:

Platform:
   osname=darwin, osvers=16.0, archname=darwin-thread-multi-2level
   uname='darwin osx320.apple.com 16.0 darwin kernel version 15.0.0: wed jun 22 17:57:08 pdt 2016; root:xnu-3247.1.106.2.9~1development_x86_64 x86_64 '
   config_args='-ds -e -Dprefix=/usr -Dccflags=-g  -pipe  -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=cc'
   hint=recommended, useposix=true, d_sigaction=define
   useithreads=define, usemultiplicity=define
   useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
   use64bitint=define, use64bitall=define, uselongdouble=undef
   usemymalloc=n, bincompat5005=undef
 Compiler:
   cc='cc', ccflags ='-arch x86_64 -arch i386 -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector',
   optimize='-Os',
   cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector'
   ccversion='', gccversion='4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)', gccosandvers=''
   intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
   d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
   ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
   alignbytes=8, prototype=define
 Linker and Libraries:
   ld='cc -mmacosx-version-min=10.12.5', ldflags ='-arch x86_64 -arch i386 -fstack-protector'
   libpth=/usr/lib /usr/local/lib
   libs=
   perllibs=
   libc=, so=dylib, useshrplib=true, libperl=libperl.dylib
   gnulibc_version=''
 Dynamic Linking:
   dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
   cccdlflags=' ', lddlflags='-arch x86_64 -arch i386 -bundle -undefined dynamic_lookup -fstack-protector'


Characteristics of this binary (from libperl):
 Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                       PERL_DONT_CREATE_GVSV
                       PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
                       PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                       PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_ALL
                       USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                       USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                       USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
                       USE_REENTRANT_API
 Locally applied patches:
/Library/Perl/Updates/<version> comes before system perl directories
installprivlib and installarchlib points to the Updates directory
 Built under darwin
 Compiled at Feb  6 2017 22:16:22
 @INC:
   /Library/Perl/5.18/darwin-thread-multi-2level
   /Library/Perl/5.18
   /Network/Library/Perl/5.18/darwin-thread-multi-2level
   /Network/Library/Perl/5.18
   /Library/Perl/Updates/5.18.2
   /System/Library/Perl/5.18/darwin-thread-multi-2level
   /System/Library/Perl/5.18
   /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
   /System/Library/Perl/Extras/5.18
   .
perl -MLWP::Protocol::https -e 'print "$LWP::Protocol::https::VERSION\n";'
6.04

perl -MNet::SSLeay -e 'print "$Net::SSLeay::VERSION\n";'
1.72

Terminal output from record series command:

get_iplayer Output:

INFO: encodinglocale = UTF-8
INFO: encodinglocalefs = UTF-8
INFO: encodingconsoleout = UTF-8
INFO: encodingconsolein = UTF-8
INFO: ${^UNICODE} = 0
INFO: Profile dir: /Users/Jack/.get_iplayer
INFO: User options file: /Users/Jack/.get_iplayer/options
INFO: System options file: /etc/get_iplayer/options
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
Current options:
encodingconsolein = UTF-8
encodingconsoleout = UTF-8
encodinglocale = UTF-8
encodinglocalefs = UTF-8
fileprefix = <nameshort><-senum><-episodeshort>
modes = best
output = /Volumes/iMac Disk A (4TB)/Jack/Public/BBC TV
outputtv = /Users/alastair/Downloads/BBC\ TV\ Temp\ Downloads
pid = p05pksm8
pidrecursive = 1
verbose = 1

INFO: Search args: ''
INFO: Loaded history for first check.
INFO: Loading recordings history
INFO: Programme not in history
INFO: Got 7984 file cache entries for tv
INFO: Got 16876 file cache entries for radio
INFO: Cleaning PID - old: 'p05pksm8' new: 'p05pksm8'
INFO: Getting URL: http://www.bbc.co.uk/programmes/p05pksm8.json
INFO: tv series or brand PID detected (p05pksm8)
INFO: Getting URL: http://www.bbc.co.uk/programmes/p05pksm8...yer?page=1
ERROR: Response: 500 Can't verify SSL peers without knowing which Certificate Authorities to trust
INFO: No episode PIDs found, checking alternate location...
INFO: Getting URL: http://www.bbc.co.uk/iplayer/episodes/p05pksm8?page=1
ERROR: Response: 500 Can't verify SSL peers without knowing which Certificate Authorities to trust
INFO: No episode PIDs found for parent PID: p05pksm8

Hopefully someone can highlight what I'm doing wrong!

Thanks in advance.
#2
This is a Homebrew installation problem - take it to their forum. We don't support that here. Technically, it's a macOS problem - there is a module missing in the system Perl - but it is up to Homebrew whether to provide the module or a workaround in the runtime environment. Users who have done a full manual installation on macOS (incl. updated versions of all Perl modules used by get_iplayer) should be OK, along with users on other platforms. Since this is a matter for Homebrew, this thread is closed - see forum rules.
#3
Also: Without a full report, there is nothing we can say about your problem downloading schedule pages. I wouldn't necessarily expect it to be related to the missing Perl module that causes the SSL verification errors, but there is no way to know. If you want to pursue the issue, follow our instructions to create a proper problem report in a new thread.
#4
Finally: Your problem downloading schedule pages may in fact stem from failed SSL verification if the Mojolicious module is also missing. Again, no way to know without a full report.
#5
Even more finally: Users who performed a minimal manual installation (macOS system Perl + local library installation of Mojolicious and IO::Socket:SSL) will now also need to install the Mozilla::CA module in your local module library. Installation doc has been updated accordingly.

EDIT: Another workaround is to export PERL_LWP_SSL_VERIFY_HOSTNAME=0 in your shell environment before running get_iplayer to bypass SSL verification, but I can't recommend that to users. It's not necessary, anyway - just install Mozilla::CA.

EDIT2: There is now a get_iplayer package installer for macOS that ensures you have a proper installation.