【问题标题】:SSL Certificate Binding fails - Access is deniedSSL 证书绑定失败 - 访问被拒绝
【发布时间】:2016-05-27 11:47:13
【问题描述】:

我想将证书绑定到端口 0.0.0.0:443
作为我创建的此证书的参数:

ICertificateBindingConfiguration config = new CertificateBindingConfiguration();

var ipPort = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 443);

var certificateThumbprint = serverCert.X509Certificate.Thumbprint.ToLower();

var appId = Guid.Parse("2f6580e5-a11a-4350-8cc0-47e5e0ac33e6");

但是当我执行这段代码时:

config.Bind(new CertificateBinding(certificateThumbprint, StoreName.My, ipPort, appId));

我收到一个错误:

System.ComponentModel.Win32Exception(0x80004005): Access is denied ...

我不是我正在执行它的机器的本地管理员。我怎样才能通过以管理员身份执行来解决这个问题?

【问题讨论】:

    标签: c# ssl ssl-certificate port


    【解决方案1】:

    发生这种情况是因为您的计算机没有管理员权限。你需要确定你有。要检查您是否具有管理员权限,您可以使用以下代码示例:

    static bool IsElevated => new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
    

    您可以创建一个示例 C# 控制台应用程序并使用上面的代码行。 你需要使用这行代码:using System.Security.Principal; 如果它有效,最好在另一个 .exe 文件中分离此功能并创建一个类似以下方法的方法以管理员身份执行它:

    public static int RunProcessAsAdmin(string exeName, string parameters)
    {
        try {
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.UseShellExecute = true;
            startInfo.WorkingDirectory = CurrentDirectory;
            startInfo.FileName = Path.Combine(CurrentDirectory, exeName);
            startInfo.Verb = "runas";
            //MLHIDE
            startInfo.Arguments = parameters;
            startInfo.ErrorDialog = true;
    
            Process process = System.Diagnostics.Process.Start(startInfo);
            process.WaitForExit();
            return process.ExitCode;
        } catch (Win32Exception ex) {
            WriteLog(ex);
            switch (ex.NativeErrorCode) {
                case 1223:
                    return ex.NativeErrorCode;
                default:
                    return ErrorReturnInteger;
            }
    
        } catch (Exception ex) {
            WriteLog(ex);
            return ErrorReturnInteger;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2017-05-17
      • 1970-01-01
      • 2018-01-08
      • 2013-09-09
      • 1970-01-01
      相关资源
      最近更新 更多