使用CertUtil从pfx文件导入证书到用户的个人存储中相对容易:
certutil –f –p [certificate_password] –importpfx C:\[certificate_path_and_name].pfx
Run Code Online (Sandbox Code Playgroud)
但这最终会在当前用户的个人存储中出现.我需要在LocalMachine上的TrustedPeople中使用它.
有什么方法可以从命令行执行此操作,通过调用certutil importpfx上的不同参数,使用另一个certutil命令或其他实用程序?Powershell是另一种可能性,虽然我对此并不了解.
干杯,马特
我正在尝试使用命令行将两个证书导入到我的本地计算机.
我有一个证书要添加到本地计算机的个人存储中,另一个要添加到受信任的根证书颁发机构.
以下是必须使用Personal Store而不是以root身份添加的命令:
certutil -f -importpfx CA.pfx NoRoot
并添加在受信任的根,而不是个人?有标签吗?我没有找到命令帮助"/?"
我使用"Let"s Encrypt"将我的Web服务器从HTTP更改为HTTPS ."Web服务器包含一个API,我有一个使用API的Python应用程序.
在Linux下一切都很好,但在Windows下我收到这个,当我登录时.
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
Run Code Online (Sandbox Code Playgroud)
我的想法是,没有安装SSL证书.
所以我下载了"isrgrootx1.der"并将"lets-encrypt-x1-cross-signed.der"重命名为结尾的"*.cer".
然后我打开了Windows控制台,然后运行:
certutil -addstore "Root" "isrgrootx1.cer".
certutil -addstore "Root" "lets-encrypt-x1-cross-signed.cer".
Run Code Online (Sandbox Code Playgroud)
第二个命令失败,因为它不是根证书.我的问题是:在哪个组中安装了"lets-encrypt-x1-cross-signed.cer"?
我已经下载了经过验证的(非自签名)S/MIME证书和iceweasel(firefox),该证书存储在cert8.db中
然后我用了:
certutil -L -d <path_to_folder_that_cert8.db_resides>
Run Code Online (Sandbox Code Playgroud)
为了列出证书,然后我使用certutil给我的证书名称解压缩.p12文件:
pk12util -o mycertfile.p12 -n "<name_found_from_certutil>" -d <path_to_folder_that_cert8.db_resides>
Run Code Online (Sandbox Code Playgroud)
问题是我丢失了对p12存储的PC 的访问权限,现在我只有一个cert8.db拷贝到另一台PC.因此我重复了这些certutil && pk12util命令,但certutil失败了:
certutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
Run Code Online (Sandbox Code Playgroud)
我拼命尝试了3台不同的计算机,包括一台具有相同内核和libnss3-tools版本的计算机(就像我成功提取p12的初始桌面),这是:
$ uname -a
Linux commander 3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
libnss3-tools 版本:2:3.17.2-1
有什么想法吗?
谢谢
我想保存一个结果
CertUtil -hashfile "path_to_file" MD5
Run Code Online (Sandbox Code Playgroud)
一个变量并删除命令行命令中的散列空格(更具体地说,我想在VS 2015 C++中的后处理命令行中使用它).
目前结果如下:
1)C:\ Users\admin> CertUtil -hashfile ping.txt MD5
2)文件的MD5哈希ping.txt:
3)4f 75 c2 2c 20 b4 81 54 72 2c a5 7c 95 7a 66 88
4)CertUtil:-hashfile命令成功完成.
我只需要该行3)- 将hexa字符串保存到变量然后删除空格.非常感谢!
如何在没有certutil.exe的情况下以编程方式将证书安装到Mozilla Firefox?我不想在Firefox上使用NSS库.certutil的替代品有哪些?有什么建议?
如何在Java中将.CSR(aka p10或PKCS#10)文件转换为.DER格式?
这是一个样本:
-----BEGIN CERTIFICATE REQUEST-----
MIICrzCCAZcCAQAwUTEOMAwGA1UEAxMFYm9ndXMxDTALBgNVBAsTBHRlc3QxDTALBgNVBAoTBGNh
c2UxITAfBgkqhkiG9w0BCQEWEmJvZ3VzQHRlc3RjYXNlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAJr3uT3018LE3gyqwAlPQba/bvw0f5YejudMLQa0ROAdUl/Yz3TlVDKB+cQK
9dTTza51FiWGKzi0xU9YZOXDfRcJoFPBR0Jkw09eh5fJ24oEsQQSgPeX11pYNaOF8vwmM8agU95I
jFiwbIuXdaOY2p7f9P1Z2G0fYZ2q34s+rbmiXVKG/YvTbAmb7BuavJ+BiwdddrJsP4WUyEmr+AzQ
2WTxTTrENx9b+2wl0qukYBLL5pWTi1EqoVIMIkxqWkKjh4Ate9L54o4lUn6WsrZGcwNOc9mreHZz
t/OtSr2zzRCDdNnuek+jw21h5rTVfeb+3ADKWDjFNvhip9xgZ6ecxKMCAwEAAaAZMBcGCSqGSIb3
DQEJBzEKEwhwYXNzd29yZDANBgkqhkiG9w0BAQQFAAOCAQEAdVfhpkb6RzdwTGxwv78JjCPmzDUn
f2SP90937fDF98xp12bvj3EX+dyyeNV52xKce2x5qIZirhiPQoIotAl9lQkTSE58BkZfgM9Bbaj6
0oDnUYH8VSKnK8Oz4R4+9FChYsG0ZUNcsbHH698csrEQT2lOgdG9tAp643KrfapySybzq6wBqK5c
HcyhiprKc7O+Nvv8vXyMRtVDJD/UQM9JJPmOhfc6B9/nLZg9BOvEAH6sAtrZXXLgZ1UJ840DToBP
CzYA3JPG+dTwuCKHWt7sVyMSkKiMb6FdAp1QeOSmismhKlWC/gGm3/Mj14GODo01T3EB0aK5gpok
zRZPM1TESg==
-----END CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)
打印CSR/P10文件
我知道我可以certutil在Windows中使用Microsoft 命令来显示它.
例:
cerutil -dump <filename.p10>
PKCS10 Certificate Request:
Version: 1
Subject:
E=bogus@testcase.com
O=case
OU=test
CN=bogus
Public Key Algorithm:
Algorithm ObjectId: 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
Algorithm Parameters:
05 00
Public Key Length: 2048 bits
Public Key: UnusedBits = 0
0000 30 82 01 0a 02 82 01 01 00 9a f7 b9 3d f4 d7 c2 …Run Code Online (Sandbox Code Playgroud) 我想使用cmd导入pfx.我正在使用certutils.但我得到一个提示,要求信任证书.我想自动导入导入,所以我想跳过警告提示.我怎么能做到这一点?

我正在使用命令certutil -f -user -p PASSWORD -importpfx c:\ cert.pfx
我想以字符串(certString)的形式获得x509证书,以便可以像
var cert = new X509Certificate2(Convert.FromBase64String(certString));
Run Code Online (Sandbox Code Playgroud)
在代码中生成一个CertObject。
我已经尝试过certUtil,但是我不确切知道我需要哪个字符串。
我需要从pfx数据中提取哪个字符串才能生成Code中的X509证书对象?
我集中管理域控制器,但站点管理员在本地管理他们自己的数字发送器。我可以通过向导轻松地将包含整个链的 X509 证书(不需要私钥)从 Windows Server 2008 R2 域控制器导出到 p7b 文件:
~~~~~~~~~~~~~~~~~~
...5. 证书导出向导打开。点击下一步。
在“导出文件格式”对话框中,执行以下操作:
一种。选择加密消息语法标准 – PKCS #7 证书 (.P7B)。
湾 如果可能,请选中在证书路径中包含所有证书。
C。点击下一步。
在要导出的文件对话框中,单击浏览。
在另存为对话框中,执行以下操作:
一种。在文件名框中,键入 ciroots.p7b。
湾 在保存类型框中,选择 PKCS #7 证书 (*.p7b)。
C。单击保存。
在要导出的文件对话框中,单击下一步。
在“完成证书导出向导”页面上,单击“完成”。
~~~~~~~~~~~~~~~~~~
它工作得很好。生成的文件可以很好地导入到数字发送器中进行身份验证。它使站点管理员可以访问链中的其他证书(如果他们尚未导入)。它不需要包含私钥,因为没有它它也能正常工作。
问题是,我需要手动执行此操作,实际上是几十次,每个业务站点一次,因为每个站点都有自己的域控制器,每个域控制器都有自己的证书。必须有一种方法可以自动执行此证书导出(PowerShell w/.NET、certutil.exe 等)。也许使用 System.Security.Cryptography.X509Certificates X509IncludeOption 和 WholeChain 的东西,但我无法让它工作:
$Cert = (dir Cert:\localmachine\my)[0]
# PKCS7 证书导出文件扩展名为 .p7b。
$CertCollection = 新对象
System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$证书| %{[void]$CertCollection.Add($_)}
$Exported_pkcs7 = $CertCollection.Export('Pkcs7')
$out_FileName = $ENV:COMPUTERNAME + ".p7b"
$My_Export_Path = 'd:\CertFiles\' + $out_FileName
Set-Content -path $My_Export_Path -Value $Exported_pkcs7 -encoding Byte …
我有一个已签名的 USB 驱动程序。我也有出版商提供的证书。如果我尝试安装驱动程序pnputil
pnputil /add-driver CerttName.cer /install
Run Code Online (Sandbox Code Playgroud)
系统询问我是否要将发布者添加到受信任的发布者。
为了避免它,我尝试以编程方式将证书添加到 Trusted Publishers
string file = @"C:\Certificates\CertName.cer";
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(new X509Certificate2(X509Certificate2.CreateFromCertFile(file)));
store.Close();
Run Code Online (Sandbox Code Playgroud)
证书已添加,但仍提示我pnputil将发布者添加到受信任的发布者。
如果我使用 certutil
certutil -addstore "TrustedPublisher" CertName.cer
Run Code Online (Sandbox Code Playgroud)
那么我不会被提示pnputil。
我还尝试从 certmgr.msc 手动导入证书,但它也不起作用。
我不明白为什么只certutil工作而其他方式(特别是 X509Store)不行。
以下命令:certutil.exe -L -d \xe2\x80\x9cC:\\Users\\Home\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\1bku2z91.default-1633392324717\\\xe2\x80\x9d\n返回此错误消息:certutil.exe: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
我尝试了带引号和不带引号,将反斜杠更改为正斜杠。我发现目标文件夹必须包含注释secmod.db,而我的文件夹没有包含注释,但我认为这适用于cert8.db,而不是cert9.db。我正在根据about:support查找传递正确的文件夹。我的火狐版本是66.0.3
certutil ×12
certificate ×5
windows ×4
c# ×3
nss ×2
powershell ×2
batch-file ×1
command-line ×1
csr ×1
firefox ×1
java ×1
lets-encrypt ×1
pem ×1
pfx ×1
pkcs#7 ×1
pki ×1
python ×1
root ×1
smime ×1
trusted ×1
x509 ×1