internal static LocalizedString UpdateActiveDirectory(X509Certificate2 certificate, IConfigurationSession systemConfiguration, Server server, List <LocalizedString> warningList, bool allowConfirmation) { X509Certificate2 internalTransportCertificate = ExchangeCertificate.GetInternalTransportCertificate(server); if (internalTransportCertificate != null) { if (string.Equals(internalTransportCertificate.Thumbprint, certificate.Thumbprint, StringComparison.OrdinalIgnoreCase)) { return(LocalizedString.Empty); } if (allowConfirmation) { return(Strings.ConfirmOverwriteInternalTransportCertificate(internalTransportCertificate.Thumbprint, internalTransportCertificate.NotAfter, certificate.Thumbprint, certificate.NotAfter)); } } server.InternalTransportCertificate = certificate.Export(X509ContentType.SerializedCert); systemConfiguration.Save(server); if (server.IsHubTransportServer) { ManageExchangeCertificate.ReEncryptEdgeSyncCredentials(server, internalTransportCertificate, certificate); systemConfiguration.Save(server); } else if (server.IsEdgeServer && warningList != null) { warningList.Add(Strings.InternalTransportCertificateUpdatedOnEdge); } return(LocalizedString.Empty); }