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