C# - OPC-UA 服务器应用程序尚未在 Linux 机器上创建 PKI 证书。

4
当我在 Windows 机器上运行 OPC-UA server C# 应用程序时,OPC-UA 服务器创建了一个证书路径 C:\ProgramData\OPC Foundation\pki\own 并在此路径内生成了一些证书,但是当我将 OPC-UA 服务器安装在 Linux 机器上时,服务器应用程序没有创建证书路径,并且我没有收到任何类似于路径访问被拒绝的错误。我正在使用以下行来在配置文件中创建证书路径,请帮助我们。
<ApplicationCertificate>
            <StoreType>Directory</StoreType>
            <StorePath>%CommonApplicationData%\OPC Foundation\pki\own</StorePath>
            <SubjectName>CN=OPCUA Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
</ApplicationCertificate>
1个回答

0

首先,在Linux上建议使用:%LocalApplicationData%

ENM: System.Environment.SpecialFolder.LocalApplicationData
WIN: C:\Users\USER\AppData\Local
LIN: /home/USER/.local/share
OSX: /Users/USER/.local/share

如果您以超级用户身份运行它,路径为/root/.local/share

如果您以普通用户身份运行它,路径为/home/victor/.local/share

如果您想查看特定文件夹的路径,请使用以下命令:

Console.WriteLine("My folder: " + Environment.GetFolderPath( Environment.SpecialFolder.LocalApplicationData));

超级用户路径: 我的文件夹

普通用户路径:普通用户

这可能会帮助您找到您的文件夹。

由于我以超级用户身份运行程序,所以它在(用户)->root/.local/share中。 只有在以root身份登录时才能访问此文件夹

location

这里是另一个普通用户:

normal user

我的安全配置(我制作了一个客户端,但我想它与服务器几乎相同):
    SecurityConfiguration = new SecurityConfiguration
                {
                    ApplicationCertificate = new CertificateIdentifier { StoreType = @"Directory", StorePath = @"%LocalApplicationData%/OPCFoundation/CertificateStores/MachineDefault", SubjectName = "Mything" },
                    TrustedIssuerCertificates = new CertificateTrustList { StoreType = @"Directory", StorePath = @"%LocalApplicationData%/OPCFoundation/CertificateStores/UA Certificate Authorities" },
                    TrustedPeerCertificates = new CertificateTrustList { StoreType = @"Directory", StorePath = @"%LocalApplicationData%/OPCFoundation/CertificateStores/UA Applications" },
                    RejectedCertificateStore = new CertificateTrustList { StoreType = @"Directory", StorePath = @"%LocalApplicationData%/OPCFoundation/CertificateStores/RejectedCertificates" },
                    AutoAcceptUntrustedCertificates = true,
                    AddAppCertToTrustedStore = true
                },

这段代码将在运行时创建证书:

application.CheckApplicationInstanceCertificate(false, 2048).GetAwaiter().GetResult();

@MdShahnewaz 你是使用超级用户还是普通用户? - Victor Pieper
我是普通用户。 - Md Shahnewaz
我正在使用 WinSCP 通过 Ubuntu。 - Md Shahnewaz
我已经给予所有文件夹和子文件夹读写访问权限,但我们仍无法创建证书。 - Md Shahnewaz
@MdShahnewaz 我不知道更多细节,只要确保所有设置都正确即可。 - Victor Pieper
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接