OPCUA github地址是:https://github.com/OPCFoundation/UA-.NETStandard
#region 用数字认证的必须方法
//步骤
//1.加载配置,如果证书不存在则生成证书
//2.把生成的证书导入到服务端(我这里使用的是在kepserver添加信任)
//3.然后再次连接即可成功
//注意:当证书验证失败时回调m_configuration.CertificateValidator.CertificateValidation += CertificateValidation这个必须要
// load the application configuration. 读取XML给加载configuration
await 如果无则创建m_application.LoadApplicationConfiguration("ConsoleReferenceClient.Config.xml", silent: false);
// check the application certificate. 检查证书
await m_application.CheckApplicationInstanceCertificate(silent: false, minimumKeySize: 0);
m_configuration = m_application.ApplicationConfiguration;
//当证书验证失败时回调
m_configuration.CertificateValidator.CertificateValidation += CertificateValidation;
#endregion
Connect();
//建立会话
注意这里必须要加CertificateValidation回调
/// <summary>
/// Handles the certificate validation event.
/// This event is triggered every time an untrusted certificate is received from the server.
/// </summary>
private void CertificateValidation(CertificateValidator sender, CertificateValidationEventArgs e)
{
bool certificateAccepted = true;
// ****
// Implement a custom logic to decide if the certificate should be
// accepted or not and set certificateAccepted flag accordingly.
// The certificate can be retrieved from the e.Certificate field
// ***
ServiceResult error = e.Error;
while (error != null)
{
Console.WriteLine(error);
error = error.InnerResult;
}
if (certificateAccepted)
{
Console.WriteLine("Untrusted Certificate accepted. SubjectName = {0}", e.Certificate.SubjectName);
}
e.AcceptAll = certificateAccepted;
}