|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface HostnameVerifier
Interface for checking if a hostname matches the names stored in an X.509 certificate.
The interface implements javax.net.ssl.HostnameVerifier, and completes
it with a set of check
methods that take resp.
an SSLSocket
,
an X509Certificate
,
or a list of certificate's CNs and DNS Subject-Alts
.
Please note that the check
methods throw exceptions when the hostname
does not match the certificate whereas verify
returns a boolean value.
The interface is provided with 5 implementations:
HostnameVerifier.DEFAULT
(works the same way as Curl and Firefox)HostnameVerifier.STRICT
(works the same way as java.net.URL)HostnameVerifier.ALLOW_ALL
(turns verification off)HostnameVerifier.DEFAULT_AND_LOCALHOST
(localhost-like addresses are accepted)HostnameVerifier.STRICT_IE6
(works that same way as IE6)The implementation is taken from Julius Davies' implementation of the not-yet-commons-ssl package (license: Apache version 2.0).
The original interface was in turn inspired by Sebastian Hauer's original
StrictSSLProtocolSocketFactory
in the HttpClient "contrib" repository.
The only differences with the original interface is that the dependency to
the Certificates class was removed not to have to import the full package,
i.e. Certificates.getCNs
and Certificates.getDNSSubjectAlts
in the initial package were simply moved to this class ; and that a specific
SSLHostnameUnverifiedException
is thrown by the check
methods when the
hostname does not match the names of the certificate.
The mobileOK Checker only uses the HostnameVerifier.DEFAULT
implementation of the interface and calls the check(String, SSLSocket)
method.
Nested Class Summary | |
---|---|
static class |
HostnameVerifier.AbstractVerifier
|
Field Summary | |
---|---|
static HostnameVerifier |
ALLOW_ALL
The ALLOW_ALL HostnameVerifier essentially turns hostname verification off. |
static HostnameVerifier |
DEFAULT
The DEFAULT HostnameVerifier works the same way as Curl and Firefox. |
static HostnameVerifier |
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 HostnameVerifier |
STRICT
The STRICT HostnameVerifier works the same way as java.net.URL in Sun Java 1.4, Sun Java 5, Sun Java 6. |
static HostnameVerifier |
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. |
Method Summary | |
---|---|
void |
check(java.lang.String[] hosts,
javax.net.ssl.SSLSocket ssl)
|
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 host,
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)
|
boolean |
verify(java.lang.String host,
javax.net.ssl.SSLSession session)
|
Field Detail |
---|
static final HostnameVerifier DEFAULT
static final HostnameVerifier DEFAULT_AND_LOCALHOST
static final HostnameVerifier STRICT
static final HostnameVerifier STRICT_IE6
static final HostnameVerifier ALLOW_ALL
Method Detail |
---|
boolean verify(java.lang.String host, javax.net.ssl.SSLSession session)
verify
in interface javax.net.ssl.HostnameVerifier
void check(java.lang.String host, javax.net.ssl.SSLSocket ssl) throws java.io.IOException
java.io.IOException
void check(java.lang.String host, java.security.cert.X509Certificate cert) throws javax.net.ssl.SSLException
javax.net.ssl.SSLException
void check(java.lang.String host, java.lang.String[] cns, java.lang.String[] subjectAlts) throws javax.net.ssl.SSLException
javax.net.ssl.SSLException
void check(java.lang.String[] hosts, javax.net.ssl.SSLSocket ssl) throws java.io.IOException
java.io.IOException
void check(java.lang.String[] hosts, java.security.cert.X509Certificate cert) throws javax.net.ssl.SSLException
javax.net.ssl.SSLException
void 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.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |