Merge pull request #5661 from thingsboard/lwm2m_cert_trust_server
[3.3.3] Lwm2m cert trust server
This commit is contained in:
commit
4fa0b7d4ad
@ -120,7 +120,7 @@ public class TbLwM2MDtlsCertificateVerifier implements NewAdvancedCertificateVer
|
||||
TbLwM2MSecurityInfo securityInfo = null;
|
||||
// verify if trust
|
||||
if (config.getTrustSslCredentials().getTrustedCertificates().length > 0) {
|
||||
if (searchIssuer(cert, config.getTrustSslCredentials().getTrustedCertificates()) != null) {
|
||||
if (verifyIssuer(cert, config.getTrustSslCredentials().getTrustedCertificates()) != null) {
|
||||
String endpoint = config.getTrustSslCredentials().getValueFromSubjectNameByKey(cert.getSubjectX500Principal().getName(), "CN");
|
||||
securityInfo = StringUtils.isNotEmpty(endpoint) ? securityInfoValidator.getEndpointSecurityInfoByCredentialsId(endpoint, CLIENT) : null;
|
||||
}
|
||||
@ -193,13 +193,16 @@ public class TbLwM2MDtlsCertificateVerifier implements NewAdvancedCertificateVer
|
||||
|
||||
}
|
||||
|
||||
private static X509Certificate searchIssuer(X509Certificate certificate, X509Certificate[] certificates) {
|
||||
X500Principal subject = certificate.getIssuerX500Principal();
|
||||
for (int index = 0; index < certificates.length; ++index) {
|
||||
X509Certificate trust = certificates[index];
|
||||
if (trust != null && subject.equals(trust.getIssuerX500Principal())) {
|
||||
if (verifyCertificate(certificate)) {
|
||||
return certificate;
|
||||
private X509Certificate verifyIssuer(X509Certificate certificate, X509Certificate[] certificates) {
|
||||
String issuerCN = config.getTrustSslCredentials().getValueFromSubjectNameByKey(certificate.getIssuerX500Principal().getName(), "CN");
|
||||
if (!StringUtils.isBlank(issuerCN)) {
|
||||
for (int index = 0; index < certificates.length; ++index) {
|
||||
X509Certificate trust = certificates[index];
|
||||
String trustCN = config.getTrustSslCredentials().getValueFromSubjectNameByKey(trust.getSubjectX500Principal().getName(), "CN");
|
||||
if (!StringUtils.isBlank(trustCN) && issuerCN.length() >= trustCN.length() && issuerCN.substring(issuerCN.length()-trustCN.length()).equals(trustCN)) {
|
||||
if (verifyCertificate(certificate)) {
|
||||
return certificate;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user