AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 973112
Accepted
Shaamaan
Shaamaan
Asked: 2019-06-28 03:22:36 +0800 CST2019-06-28 03:22:36 +0800 CST 2019-06-28 03:22:36 +0800 CST

Windows Server 2016 上缺少根证书(全新安装)

  • 772

在公司,我们从来没有真正关心过根证书,并且认为这是与 Windows 更新一起管理的东西(并且有 WSUS),一切都很好。

然而,今天,我注意到一个全新的 Windows Server 2016 安装以及所有更新,似乎只有非常基本的根证书,以至于我什至无法打开谷歌(由于不信任他们的证书)。

(我还没有检查过全新的 Windows 10 安装...)

我对此感到有些困惑,因为这以前没有发生过。要么我们在 GPO 中做了一些糟糕的更改(但我想不出任何会产生这种效果的东西),还是这是最近更改的?我应该如何继续,以便可以毫无问题地访问诸如 Google 之类的东西?我现在是否需要通过 GPO 手动添加受信任的证书?


以下是全新服务器安装情况的一些屏幕截图。

SSL 证书错误

一般的

小路

证书列表

ssl-certificate
  • 2 2 个回答
  • 10727 Views

2 个回答

  • Voted
  1. Best Answer
    Crypt32
    2019-06-28T03:53:53+08:002019-06-28T03:53:53+08:00

    这是好的和预期的行为。默认情况下,受信任的根存储中只有少数必需的证书可见。其余的(大约有 300 个根)在您第一次面对它们时按需安装。Crypt32.dll在 Windows 更新中和上存在根证书的隐藏副本。没有什么可担心的。

    更新:

    我进行了内部检查,发现请求的根目录嵌入在crypt32.dll文件中。这是您可以从此 dll 中提取嵌入式证书并找到预期根的 PowerShell 代码:

    $signature = @"
    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern IntPtr LoadLibraryEx(
        String lpFileName,
        IntPtr hFile,
        UInt32 dwFlags
    );
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern IntPtr FindResource(
        IntPtr hModule,
        int lpID,
        string lpType
    );
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern uint SizeofResource(
        IntPtr hModule,
        IntPtr hResInfo
    );
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern IntPtr LoadResource(
        IntPtr hModule,
        IntPtr hResInfo
    );
    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool FreeLibrary(
        IntPtr hModule
    );
    "@
    Add-Type -MemberDefinition $signature -Namespace PKI -Name Kernel32
    $path = $Env:SystemRoot + "\System32\crypt32.dll"
    $hModule = [PKI.Kernel32]::LoadLibraryEx($path,[IntPtr]::Zero,0x2)
    $hResInfo = [PKI.Kernel32]::FindResource($hModule,1010,"AUTHROOTS")
    $size = [PKI.Kernel32]::SizeOfResource($hModule, $hResInfo)
    $resource = [PKI.Kernel32]::LoadResource($hModule, $hResInfo)
    $bytes = New-Object byte[] -ArgumentList $size
    [Runtime.InteropServices.Marshal]::Copy($resource, $bytes, 0, $size)
    $AUTHROOTS = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
    $AUTHROOTS.Import($bytes)
    [void][PKI.Kernel32]::FreeLibrary($hModule)
    $AUTHROOTS | ?{$_.thumbprint -eq "75E0ABB6138512271C04F85FDDDE38E4B7242EFE"}
    

    只需将此代码复制粘贴到 PS 控制台并检查是否返回任何对象/

    • 4
  2. Greg Askew
    2019-06-28T07:56:49+08:002019-06-28T07:56:49+08:00

    如果系统可以访问 Internet 并且该功能未被禁用,则受信任的根 CA 会自动更新。您还可以使用 certutil 下载受信任的根证书,将它们发布到共享中,并创建组策略来指导系统获取它们的位置。

    https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn265983(v%3Dws.11)

    http://woshub.com/updating-trusted-root-certificates-in-windows-10/

    Key: HKLM\Software\Policies\Microsoft\SystemCertificates\AuthRoot
    
    Value: DisableRootAutoUpdate
    
    • 3

相关问题

  • RHEL/Apache ssl.conf 配置问题

  • IIS7 中的证书信任列表

  • SSL证书的区别?

  • 如何修复邮件服务器 SSL?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve