javax.net.ssl.HostnameVerifierSSLHostnameVerifier.AbstractVerifier@Private
@Evolving
public interface SSLHostnameVerifier
extends javax.net.ssl.HostnameVerifier
Our check() methods throw exceptions if the name is invalid, whereas javax.net.ssl.HostnameVerifier just returns true/false.
We provide the HostnameVerifier.DEFAULT, HostnameVerifier.STRICT, and HostnameVerifier.ALLOW_ALL implementations. We also provide the more specialized HostnameVerifier.DEFAULT_AND_LOCALHOST, as well as HostnameVerifier.STRICT_IE6. But feel free to define your own implementations!
Inspired by Sebastian Hauer's original StrictSSLProtocolSocketFactory in the HttpClient "contrib" repository.
| Modifier and Type | Interface | Description |
|---|---|---|
static class |
SSLHostnameVerifier.AbstractVerifier |
|
static class |
SSLHostnameVerifier.Certificates |
| Modifier and Type | Field | Description |
|---|---|---|
static SSLHostnameVerifier |
ALLOW_ALL |
The ALLOW_ALL HostnameVerifier essentially turns hostname verification
off.
|
static SSLHostnameVerifier |
DEFAULT |
The DEFAULT HostnameVerifier works the same way as Curl and Firefox.
|
static SSLHostnameVerifier |
DEFAULT_AND_LOCALHOST |
The DEFAULT_AND_LOCALHOST HostnameVerifier works like the DEFAULT
one with one additional relaxation: a host of "localhost",
"localhost.localdomain", "127.0.0.1", "::1" will always pass, no matter
what is in the server's certificate.
|
static SSLHostnameVerifier |
STRICT |
The STRICT HostnameVerifier works the same way as java.net.URL in Sun
Java 1.4, Sun Java 5, Sun Java 6.
|
static SSLHostnameVerifier |
STRICT_IE6 |
The STRICT_IE6 HostnameVerifier works just like the STRICT one with one
minor variation: the hostname can match against any of the CN's in the
server's certificate, not just the first one.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
check(java.lang.String[] hosts,
java.lang.String[] cns,
java.lang.String[] subjectAlts) |
Checks to see if the supplied hostname matches any of the supplied CNs
or "DNS" Subject-Alts.
|
void |
check(java.lang.String[] hosts,
java.security.cert.X509Certificate cert) |
|
void |
check(java.lang.String[] hosts,
javax.net.ssl.SSLSocket ssl) |
|
void |
check(java.lang.String host,
java.lang.String[] cns,
java.lang.String[] subjectAlts) |
|
void |
check(java.lang.String host,
java.security.cert.X509Certificate cert) |
|
void |
check(java.lang.String host,
javax.net.ssl.SSLSocket ssl) |
|
boolean |
verify(java.lang.String host,
javax.net.ssl.SSLSession session) |
static final SSLHostnameVerifier DEFAULT
The hostname must match either the first CN, or any of the subject-alts. A wildcard can occur in the CN, and in any of the subject-alts.
The only difference between DEFAULT and STRICT is that a wildcard (such as "*.foo.com") with DEFAULT matches all subdomains, including "a.b.foo.com".
static final SSLHostnameVerifier DEFAULT_AND_LOCALHOST
static final SSLHostnameVerifier STRICT
The hostname must match either the first CN, or any of the subject-alts. A wildcard can occur in the CN, and in any of the subject-alts. The one divergence from IE6 is how we only check the first CN. IE6 allows a match against any of the CNs present. We decided to follow in Sun Java 1.4's footsteps and only check the first CN.
A wildcard such as "*.foo.com" matches only subdomains in the same level, for example "a.foo.com". It does not match deeper subdomains such as "a.b.foo.com".
static final SSLHostnameVerifier STRICT_IE6
static final SSLHostnameVerifier ALLOW_ALL
boolean verify(java.lang.String host,
javax.net.ssl.SSLSession session)
verify in interface javax.net.ssl.HostnameVerifiervoid check(java.lang.String host,
javax.net.ssl.SSLSocket ssl)
throws java.io.IOException
java.io.IOExceptionvoid check(java.lang.String host,
java.security.cert.X509Certificate cert)
throws javax.net.ssl.SSLException
javax.net.ssl.SSLExceptionvoid check(java.lang.String host,
java.lang.String[] cns,
java.lang.String[] subjectAlts)
throws javax.net.ssl.SSLException
javax.net.ssl.SSLExceptionvoid check(java.lang.String[] hosts,
javax.net.ssl.SSLSocket ssl)
throws java.io.IOException
java.io.IOExceptionvoid check(java.lang.String[] hosts,
java.security.cert.X509Certificate cert)
throws javax.net.ssl.SSLException
javax.net.ssl.SSLExceptionvoid check(java.lang.String[] hosts,
java.lang.String[] cns,
java.lang.String[] subjectAlts)
throws javax.net.ssl.SSLException
cns - CN fields, in order, as extracted from the X.509
certificate.subjectAlts - Subject-Alt fields of type 2 ("DNS"), as extracted
from the X.509 certificate.hosts - The array of hostnames to verify.javax.net.ssl.SSLException - If verification failed.Copyright © 2008–2025 Apache Software Foundation. All rights reserved.