[ 
https://issues.apache.org/jira/browse/ARROW-10105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17208007#comment-17208007
 ] 

James Duong commented on ARROW-10105:
-------------------------------------

Making some progress on this:
* I tested putting in a PEM for tls_roots_pem and see the new tests pass. I can 
confirm that it's running the callback I added to skip over cert verification 
-- I was actually getting a crash due to [this bug in 
gRPC|https://github.com/grpc/grpc/issues/22287] until I wrote a workaround for 
it.
* The CentOS 5.11 build errors were from using gRPC 1.29 in build_grpc.sh 
scripts. This puts TlsCredentials and related classes in a different namespace 
than in 1.32 which is what brew and other environments used. grpc::experimental 
is used in 1.32 and grps_impl::experimental is used in older versions.

I'm running into two build problems now:
The first: 
Several Ursabot / AMD64 Conda builds are failing. I do not know where they are 
getting gRPC from or how they determine the gRPC version to get. eg: 
https://ci.ursalabs.org/#/builders/66/builds/11440

The second:
When I switch build_grpc.sh to compile gRPC 1.32, I get build errors building 
it on CentOS 5. The first was that it now has a new dependency on RE2, which I 
resolved. The second seems to be related to CentOS5 using an older Linux kernel 
(https://github.com/apache/arrow/pull/8325/checks?check_run_id=1208358439):

{noformat}
CMakeFiles/grpc_unsecure.dir/src/core/lib/iomgr/socket_utils_common_posix.cc.o 
-c src/core/lib/iomgr/socket_utils_common_posix.cc
In file included from /usr/include/asm-x86_64/byteorder.h:30:0,
                 from /usr/include/asm/byteorder.h:5,
                 from /usr/include/linux/tcp.h:21,
                 from src/core/lib/iomgr/socket_utils_common_posix.cc:34:
/usr/include/linux/byteorder/little_endian.h:43:19: error: ‘__le64’ does not 
name a type
 static __inline__ __le64 __cpu_to_le64p(const __u64 *p)
                   ^
/usr/include/linux/byteorder/little_endian.h:47:46: error: ‘__le64’ does not 
name a type
 static __inline__ __u64 __le64_to_cpup(const __le64 *p)
                                              ^
/usr/include/linux/byteorder/little_endian.h:67:19: error: ‘__be64’ does not 
name a type
 static __inline__ __be64 __cpu_to_be64p(const __u64 *p)
                   ^
/usr/include/linux/byteorder/little_endian.h:71:46: error: ‘__be64’ does not 
name a type
 static __inline__ __u64 __be64_to_cpup(const __be64 *p)
{noformat}

I have read about a similar problem in QT where it could be resolved by using 
-std=gnu++11 instead of -std=c++11. But we'd have to figure out a way to get 
gRPC's build system to do this. What's also odd is that particular class and 
the #include of linux/tcp.h have been around since gRPC 1.21. I don't think we 
could get away with just using an older gRPC either -- we'll get build issues 
due to TlsCredentials being in different namespaces depending on gRPC versions. 
I don't see a way to define a macro to identify the namespace to look for 
TlsCredentials either -- gRPC has a method to get the version at runtime but 
there wasn't an obvious way to get this through the preprocessor.

There are also build failures in MinGW and R that seem to be issues downloading 
dependencies.



> [FlightRPC] Add client option to disable certificate validation with TLS
> ------------------------------------------------------------------------
>
>                 Key: ARROW-10105
>                 URL: https://issues.apache.org/jira/browse/ARROW-10105
>             Project: Apache Arrow
>          Issue Type: New Feature
>          Components: C++, FlightRPC, Java, Python
>            Reporter: James Duong
>            Assignee: James Duong
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.0.0
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Users of Flight may want to disable certificate validation if they want to 
> only use encryption. A use case might be that the Flight server uses a 
> self-signed certificate and doesn't distribute a certificate for clients to 
> use.
> This feature would be to add an explicit option to FlightClient.Builder to 
> disable certificate validation. Note that this should not happen implicitly 
> if a client uses a TLS location, but does not set a certificate. The client 
> should explicitly set this option so that they are fully aware that they are 
> making a connection with reduced security.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to