google / google/conscrypt

OkHostName verifier unable to verify ipv6 addresses

Open
#1,072 3 comments 0 reactions 1 assignee Claimed by @prbprbprb View on GitHub
bug
Dominant language
Java
Stars
1.4k
Forks
326
Avg merge
16h 22m
Merged PRs (30d)
17

Description

**java -version**

openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-post-Debian-1deb10u1, mixed mode, sharing)

**uname- a**
Linux example 5.10.104-custom #1 SMP Mon Sep 27 00:00:00 UTC 2010 x86_64 GNU/Linux

Using
**conscrypt tag 2.5.0.**

We are trying to use conscrypt as ssl provider for kafka and we are getting in to issues while using verify ip address.

In our certificate we have the following ipv6 ip addresses ( its not the real address, but something similar)

IPAddress: 2001:0db8:85a3:1130::0370:7334
IPAddress: 2001:0db8:85a3:1130:0:0:0370:7334
IPAddress: 2001:0db8:85a3:1130:0000:0000:0370:7334

Here in this example, the real ip address of the host is 2001:0db8:85a3:1130:0:0:0370:7334, but when Conscrypt engine's [okhostnameverifier](https://github.com/google/conscrypt/blob/master/common/src/main/java/org/conscrypt/OkHostnameVerifier.java), [getSubjectAltNames(certificate, ALT_IPA_NAME)](https://github.com/google/conscrypt/blob/3171d2ad4a0a86a1dd46da6c803fd28fe0479ecb/common/src/main/java/org/conscrypt/OkHostnameVerifier.java#L99) returns the three altnames as

below 2001:0db8:85a3:1130::0370:7334 ( and does not return the other two ip addresses one of which also contains the machines ip address ). And because of this and since we are using [if (ipAddress.equalsIgnoreCase(altNames.get(i)))](https://github.com/google/conscrypt/blob/3171d2ad4a0a86a1dd46da6c803fd28fe0479ecb/common/src/main/java/org/conscrypt/OkHostnameVerifier.java#L102), in , the ip address verification returns false, resulting in the below exception

javax.net.ssl.SSLHandshakeException: No subjectAltNames on the certificate match

I am looking for what is the best way to verify ip address as subject alt names is returning ip address in only one format ( 2001:0db8:85a3:1130::0370:7334 and not 2001:0db8:85a3:1130:0:0:0370:7334, which is the machines ip address ) and since we use equalsignorecase, it fails even if the ssl certificate contains the correct altnames.

Could some one please help on what would be the best way to verifyIpAddress in okhostname verifier ? Should the certificate need to have a different ip address format so that the verification succeeds ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.