首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 2012 R2 Server -如何安全地从R2中删除文件

Windows 2012 R2 Server -如何安全地从R2中删除文件
EN

Server Fault用户
提问于 2019-06-19 21:16:35
回答 1查看 4.9K关注 0票数 1

在带有IIS的Windows2012Web服务器上,我们有一个在C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys中生成证书并保存密钥的R2应用程序。我们已经修复了这个问题,但是现在文件夹中有超过6,000,000个文件。

我尝试重命名该文件夹并创建一个空的MachineKeys文件夹,但它破坏了操作系统处理SSL连接的能力。

我可以使用以下脚本找到哪个LocalMachine存储库证书对应于哪个文件名:

代码语言:javascript
运行
复制
Foreach ($MachineCert In Get-ChildItem Cert:\LocalMachine -Recurse | Where HasPrivateKey)
{
    $array += $MachineCert | 
       Select @{n='Subject';   e={ $MachineCert.Subject }},
              @{n='Container'; e={ $MachineCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName }},
              @{n='Store';     e={ $MachineCert.PSParentPath }}
}

然而,我不知道如何处理这些信息。这里有数以百万计的文件,所以除了上面脚本所报告的文件之外,我是否都能安全地处理这些文件呢?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-06-22 02:17:16

我想出了办法。首先,我使用这个脚本编译了一个需要保存的证书列表:

代码语言:javascript
运行
复制
$array = @()

Foreach ($MachineCert In Get-ChildItem Cert:\LocalMachine -Recurse | Where HasPrivateKey)
{
    $array += $MachineCert | 
       Select @{n='Subject';   e={ $MachineCert.Subject }},
              @{n='Container'; e={ $MachineCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName }},
              @{n='Store';     e={ $MachineCert.PSParentPath }}
}

$array | Export-CSV c:\temp\out.csv

然后,我将输出文件中的所有容器名称输入到另一个脚本中,该脚本用匹配的文件名将文件从MachineKeys文件夹复制到另一个文件夹中:

代码语言:javascript
运行
复制
$arr = @(
    "f686aace6942fb7f7ceb231212eef4a4_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "d1acbca52745e8cdc7796dc9283bb8fc_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "83ceb9ab426f3fa7efdf06154db8cd13_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "98d0bf53be581119e8ac290607289a64_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "e955cd99d4ab953714119f933c483fd5_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "1b1f4753df9704baf9d16743d0c9b3d1_4cd8c04c-5245-4f49-962b-9e4388716e1f",
    "a31b3a063eb59a2fe7801565c6aa3846_4cd8c04c-5245-4f49-962b-9e4388716e1f"
)


gci -File -Recurse -Include $arr | % { copy-item $_.FullName "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys_new" }

该脚本运行了几乎一整天,因为它必须遍历数百万个文件。完成后,我将现有文件夹重命名为"MachineKeys_old“,并将新文件夹从上面的脚本重命名为"MachineKeys”。我重新启动了服务器,以确保所有东西都能正常工作,而且确实如此。SQL,IIS,一切正常。

还有一件事需要注意--确保为新的MachineKeys文件夹分配了适当的权限。对我来说,我不得不给予“每个人”读/写/修改“访问权”。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/972162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档