public final class FingerprintTrustManagerFactory extends SimpleTrustManagerFactory
TrustManagerFactory
。
注意:建议验证证书及其链条以防止Man-in-the-middle attacks 。 这TrustManagerFactory
将只验证证书的指纹是否与指定指纹之一匹配。 这个过程被称为certificate pinning ,是一个有效的保护。 为了最大限度地提高安全性,应该验证整个证书链是否符合预期。 值得一提的是,在企业环境中发现的某些防火墙,代理或其他设备实际上执行了中间人攻击,因此提供了不同的证书指纹。
X.509证书的SHA1校验和是从DER编码格式计算的。 您可以使用openssl
命令获取X.509证书的指纹。 例如:
$ openssl x509 -fingerprint -sha1 -in my_certificate.crt
SHA1 Fingerprint=4E:85:10:55:BC:7B:12:08:D1:EA:0A:12:C9:72:EE:F3:AA:B2:C7:CB
-----BEGIN CERTIFICATE-----
MIIBqjCCAROgAwIBAgIJALiT3Nvp0kvmMA0GCSqGSIb3DQEBBQUAMBYxFDASBgNV
BAMTC2V4YW1wbGUuY29tMCAXDTcwMDEwMTAwMDAwMFoYDzk5OTkxMjMxMjM1OTU5
WjAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAnadvODG0QCiHhaFZlLHtr5gLIkDQS8ErZ//KfqeCHTC/KJsl3xYFk0zG
aCv2FcmkOlokm77qV8qOW2DZdND7WuYzX6nLVuLb+GYxZ7b45iMAbAajvGh8jc9U
o07fUIahGqTDAIAGCWsoLUOQ9nMzO/8GRHcXJAeQ2MGY2VpCcv0CAwEAATANBgkq
hkiG9w0BAQUFAAOBgQBpRCnmjmNM0D7yrpkUJpBTNiqinhKLbeOvPWm+YmdInUUs
LoMu0mZ1IANemLwqbwJJ76fknngeB+YuVAj46SurvVCV6ekwHcbgpW1u063IRwKk
tQhOBO0HQxldUS4+4MYv/kuvnKkbjfgh5qfWw89Kx4kD+cycpP4yPtgDGk8ZMA==
-----END CERTIFICATE-----
Constructor and Description |
---|
FingerprintTrustManagerFactory(byte[]... fingerprints)
创建一个新的实例。
|
FingerprintTrustManagerFactory(java.lang.Iterable<java.lang.String> fingerprints)
创建一个新的实例。
|
FingerprintTrustManagerFactory(java.lang.String... fingerprints)
创建一个新的实例。
|
Modifier and Type | Method and Description |
---|---|
protected javax.net.ssl.TrustManager[] |
engineGetTrustManagers()
为每种类型的信任材料返回一个信任管理器。
|
protected void |
engineInit(java.security.KeyStore keyStore)
使用证书颁发机构和相关信任材料的来源初始化此工厂。
|
protected void |
engineInit(javax.net.ssl.ManagerFactoryParameters managerFactoryParameters)
使用特定于提供者的密钥材料的来源初始化此工厂。
|
public FingerprintTrustManagerFactory(java.lang.Iterable<java.lang.String> fingerprints)
fingerprints
- 十六进制形式的SHA1指纹列表
public FingerprintTrustManagerFactory(java.lang.String... fingerprints)
fingerprints
- 十六进制形式的SHA1指纹列表
public FingerprintTrustManagerFactory(byte[]... fingerprints)
fingerprints
- SHA1指纹列表
protected void engineInit(java.security.KeyStore keyStore) throws java.lang.Exception
SimpleTrustManagerFactory
engineInit
在课堂上
SimpleTrustManagerFactory
java.lang.Exception
TrustManagerFactorySpi.engineInit(KeyStore)
protected void engineInit(javax.net.ssl.ManagerFactoryParameters managerFactoryParameters) throws java.lang.Exception
SimpleTrustManagerFactory
engineInit
在课堂上
SimpleTrustManagerFactory
java.lang.Exception
TrustManagerFactorySpi.engineInit(ManagerFactoryParameters)
protected javax.net.ssl.TrustManager[] engineGetTrustManagers()
SimpleTrustManagerFactory
engineGetTrustManagers
在课堂上
SimpleTrustManagerFactory
TrustManagerFactorySpi.engineGetTrustManagers()
Copyright © 2008–2018 The Netty Project. All rights reserved.