本文整理汇总了C#中ApplicationConfiguration.GetServerDomainNames方法的典型用法代码示例。如果您正苦于以下问题:C# ApplicationConfiguration.GetServerDomainNames方法的具体用法?C# ApplicationConfiguration.GetServerDomainNames怎么用?C# ApplicationConfiguration.GetServerDomainNames使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ApplicationConfiguration
的用法示例。
在下文中一共展示了ApplicationConfiguration.GetServerDomainNames方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateApplicationInstanceCertificate
/// <summary>
/// Creates the application instance certificate.
/// </summary>
/// <param name="configuration">The configuration.</param>
/// <param name="keySize">Size of the key.</param>
/// <param name="lifetimeInMonths">The lifetime in months.</param>
/// <returns>The new certificate</returns>
private static X509Certificate2 CreateApplicationInstanceCertificate(
ApplicationConfiguration configuration,
ushort keySize,
ushort lifetimeInMonths)
{
Utils.Trace(Utils.TraceMasks.Information, "Creating application instance certificate. KeySize={0}, Lifetime={1}", keySize, lifetimeInMonths);
// delete existing any existing certificate.
DeleteApplicationInstanceCertificate(configuration);
CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
// get the domains from the configuration file.
IList<string> serverDomainNames = configuration.GetServerDomainNames();
if (serverDomainNames.Count == 0)
{
serverDomainNames.Add(System.Net.Dns.GetHostName());
}
// ensure the certificate store directory exists.
if (id.StoreType == CertificateStoreType.Directory)
{
Utils.GetAbsoluteDirectoryPath(id.StorePath, true, true, true);
}
X509Certificate2 certificate = Opc.Ua.CertificateFactory.CreateCertificate(
id.StoreType,
id.StorePath,
configuration.ApplicationUri,
configuration.ApplicationName,
null,
serverDomainNames,
keySize,
lifetimeInMonths);
id.Certificate = certificate;
AddToTrustedStore(configuration, certificate);
/*
if (id.StoreType == CertificateStoreType.Directory)
{
DirectoryCertificateStore store = new DirectoryCertificateStore();
store.Open(id.StorePath);
List<ApplicationAccessRule> rules = new List<ApplicationAccessRule>();
ApplicationAccessRule rule = new ApplicationAccessRule();
rule.RuleType = AccessControlType.Allow;
rule.Right = ApplicationAccessRight.Run;
rule.IdentityName = WellKnownSids.NetworkService;
rules.Add(rule);
rule = new ApplicationAccessRule();
rule.RuleType = AccessControlType.Allow;
rule.Right = ApplicationAccessRight.Run;
rule.IdentityName = WellKnownSids.LocalService;
rules.Add(rule);
rule = new ApplicationAccessRule();
rule.RuleType = AccessControlType.Allow;
rule.Right = ApplicationAccessRight.Run;
rule.IdentityName = WellKnownSids.LocalSystem;
rules.Add(rule);
store.SetAccessRules(certificate.Thumbprint, rules, false);
}
*/
configuration.CertificateValidator.Update(configuration.SecurityConfiguration);
Utils.Trace(Utils.TraceMasks.Information, "Certificate created. Thumbprint={0}", certificate.Thumbprint);
// reload the certificate from disk.
return configuration.SecurityConfiguration.ApplicationCertificate.LoadPrivateKey(null);
}
示例2: CheckDomainsInCertificate
/// <summary>
/// Checks that the domains in the server addresses match the domains in the certificates.
/// </summary>
private static bool CheckDomainsInCertificate(
ApplicationConfiguration configuration,
X509Certificate2 certificate,
bool silent)
{
Utils.Trace(Utils.TraceMasks.Information, "Checking domains in certificate. {0}", certificate.Subject);
bool valid = true;
IList<string> serverDomainNames = configuration.GetServerDomainNames();
IList<string> certificateDomainNames = Utils.GetDomainsFromCertficate(certificate);
// get computer name.
string computerName = System.Net.Dns.GetHostName();
// get DNS aliases and IP addresses.
System.Net.IPHostEntry entry = System.Net.Dns.GetHostEntry(computerName);
for (int ii = 0; ii < serverDomainNames.Count; ii++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii]))
{
continue;
}
if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName))
{
continue;
}
// check for aliases.
bool found = false;
for (int jj = 0; jj < entry.Aliases.Length; jj++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, entry.Aliases[jj]))
{
found = true;
break;
}
}
if (found)
{
continue;
}
// check for ip addresses.
for (int jj = 0; jj < entry.AddressList.Length; jj++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, entry.AddressList[jj].ToString()))
{
found = true;
break;
}
}
if (found)
{
continue;
}
}
string message = Utils.Format(
"The server is configured to use domain '{0}' which does not appear in the certificate. Update certificate?",
serverDomainNames[ii]);
valid = false;
if (!silent)
{
if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
{
valid = true;
continue;
}
}
Utils.Trace(message);
break;
}
return valid;
}
示例3: CreateApplicationInstanceCertificate
/// <summary>
/// Creates the application instance certificate.
/// </summary>
/// <param name="configuration">The configuration.</param>
/// <param name="keySize">Size of the key.</param>
/// <param name="lifetimeInMonths">The lifetime in months.</param>
/// <returns>The new certificate</returns>
private static async Task<X509Certificate2> CreateApplicationInstanceCertificate(
ApplicationConfiguration configuration,
ushort minimumKeySize = CertificateFactory.defaultKeySize,
ushort lifeTimeInMonths = CertificateFactory.defaultLifeTime
)
{
Utils.Trace(Utils.TraceMasks.Information, "Creating application instance certificate.");
// delete any existing certificate.
DeleteApplicationInstanceCertificate(configuration);
CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
// get the domains from the configuration file.
IList<string> serverDomainNames = configuration.GetServerDomainNames();
if (serverDomainNames.Count == 0)
{
serverDomainNames.Add(Utils.GetHostName());
}
// ensure the certificate store directory exists.
if (id.StoreType == CertificateStoreType.Directory)
{
Utils.GetAbsoluteDirectoryPath(id.StorePath, true, true, true);
}
X509Certificate2 certificate = CertificateFactory.CreateCertificate(
id.StoreType,
id.StorePath,
configuration.ApplicationUri,
configuration.ApplicationName,
id.SubjectName,
serverDomainNames,
minimumKeySize,
lifeTimeInMonths
);
id.Certificate = certificate;
await AddToTrustedStore(configuration, certificate);
await configuration.CertificateValidator.Update(configuration.SecurityConfiguration);
Utils.Trace(Utils.TraceMasks.Information, "Certificate created. Thumbprint={0}", certificate.Thumbprint);
// reload the certificate from disk.
await configuration.SecurityConfiguration.ApplicationCertificate.LoadPrivateKey(null);
return certificate;
}
示例4: CheckDomainsInCertificate
/// <summary>
/// Checks that the domains in the server addresses match the domains in the certificates.
/// </summary>
private static async Task<bool> CheckDomainsInCertificate(
ApplicationConfiguration configuration,
X509Certificate2 certificate,
bool silent)
{
Utils.Trace(Utils.TraceMasks.Information, "Checking domains in certificate. {0}", certificate.Subject);
bool valid = true;
IList<string> serverDomainNames = configuration.GetServerDomainNames();
IList<string> certificateDomainNames = Utils.GetDomainsFromCertficate(certificate);
// get computer name.
string computerName = Utils.GetHostName();
// get IP addresses.
IPAddress[] addresses = null;
for (int ii = 0; ii < serverDomainNames.Count; ii++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii]))
{
continue;
}
if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName))
{
continue;
}
// check for aliases.
bool found = false;
// get IP addresses only if necessary.
if (addresses == null)
{
addresses = await Utils.GetHostAddresses(computerName);
}
// check for ip addresses.
for (int jj = 0; jj < addresses.Length; jj++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, addresses[jj].ToString()))
{
found = true;
break;
}
}
if (found)
{
continue;
}
}
string message = Utils.Format(
"The server is configured to use domain '{0}' which does not appear in the certificate. Use certificate?",
serverDomainNames[ii]);
valid = false;
if (!silent && MessageDlg != null)
{
MessageDlg.Message(message, true);
if (await MessageDlg.ShowAsync())
{
valid = true;
continue;
}
}
Utils.Trace(message);
break;
}
return valid;
}
示例5: CheckApplicationInstanceCertificate
/// <summary>
/// Creates an application instance certificate if one does not already exist.
/// </summary>
public static X509Certificate2 CheckApplicationInstanceCertificate(
ApplicationConfiguration configuration,
ushort keySize,
bool interactive,
bool updateFile)
{
// create a default certificate id none specified.
CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
if (id == null)
{
id = new CertificateIdentifier();
id.StoreType = Utils.DefaultStoreType;
id.StorePath = Utils.DefaultStorePath;
id.SubjectName = configuration.ApplicationName;
}
bool createNewCertificate = false;
IList<string> serverDomainNames = configuration.GetServerDomainNames();
// check for private key.
X509Certificate2 certificate = id.Find(true);
if (certificate == null)
{
// check if config file has wrong thumprint.
if (!String.IsNullOrEmpty(id.SubjectName) && !String.IsNullOrEmpty(id.Thumbprint))
{
CertificateIdentifier id2 = new CertificateIdentifier();
id2.StoreType = id.StoreType;
id2.StorePath = id.StorePath;
id2.SubjectName = id.SubjectName;
id = id2;
certificate = id2.Find(true);
if (certificate != null)
{
string message = Utils.Format(
"Matching certificate with SubjectName={0} found but with a different thumbprint. Use certificate?",
id.SubjectName);
if (interactive)
{
if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo) == DialogResult.No)
{
certificate = null;
}
}
}
}
}
// check if private key is missing.
if (certificate == null)
{
certificate = id.Find(false);
if (certificate != null)
{
string message = Utils.Format(
"Matching certificate with SubjectName={0} found but without a private key. Create a new certificate?",
id.SubjectName);
if (interactive)
{
if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo) == DialogResult.No)
{
certificate = null;
}
}
}
}
// check domains.
if (certificate != null)
{
IList<string> certificateDomainNames = Utils.GetDomainsFromCertficate(certificate);
for (int ii = 0; ii < serverDomainNames.Count; ii++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii]))
{
continue;
}
if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0)
{
// check computer name.
string computerName = System.Net.Dns.GetHostName();
if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName))
{
continue;
}
// check for aliases.
//.........这里部分代码省略.........
示例6: CheckApplicationInstanceCertificate
/// <summary>
/// Creates an application instance certificate if one does not already exist.
/// </summary>
public static async Task<X509Certificate2> CheckApplicationInstanceCertificate(
ApplicationConfiguration configuration,
ushort keySize,
bool interactive,
bool updateFile)
{
// create a default certificate if none is specified.
CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
if (id == null)
{
id = new CertificateIdentifier();
id.StoreType = Utils.DefaultStoreType;
id.StorePath = ApplicationData.Current.LocalFolder.Path + "\\OPC Foundation\\CertificateStores\\MachineDefault";
id.SubjectName = configuration.ApplicationName;
}
bool createNewCertificate = false;
IList<string> serverDomainNames = configuration.GetServerDomainNames();
// check for private key.
X509Certificate2 certificate = await id.Find(true);
if (certificate == null)
{
// check if config file has wrong thumprint.
if (!String.IsNullOrEmpty(id.SubjectName) && !String.IsNullOrEmpty(id.Thumbprint))
{
CertificateIdentifier id2 = new CertificateIdentifier();
id2.StoreType = id.StoreType;
id2.StorePath = id.StorePath;
id2.SubjectName = id.SubjectName;
id = id2;
certificate = await id2.Find(true);
if (certificate != null)
{
string message = Utils.Format(
"Matching certificate with SubjectName={0} found but with a different thumbprint. Use certificate?",
id.SubjectName);
if (interactive)
{
MessageDlg dialog = new MessageDlg(message, MessageDlgButton.Yes, MessageDlgButton.No);
MessageDlgButton result = await dialog.ShowAsync();
if (result != MessageDlgButton.Yes)
{
certificate = null;
}
}
}
}
// check if private key is missing.
if (certificate == null)
{
certificate = await id.Find(false);
if (certificate != null)
{
string message = Utils.Format(
"Matching certificate with SubjectName={0} found but without a private key. Create a new certificate?",
id.SubjectName);
if (interactive)
{
MessageDlg dialog = new MessageDlg(message, MessageDlgButton.Yes, MessageDlgButton.No);
MessageDlgButton result = await dialog.ShowAsync();
if (result != MessageDlgButton.Yes)
{
certificate = null;
}
}
}
}
// check domains.
if (certificate != null)
{
IList<string> certificateDomainNames = Utils.GetDomainsFromCertficate(certificate);
for (int ii = 0; ii < serverDomainNames.Count; ii++)
{
if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii]))
{
continue;
}
if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0)
{
// check computer name.
string computerName = Utils.GetHostName();
if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName))
{
continue;
//.........这里部分代码省略.........