如何使用单声道中的certmgr导入自签名证书的私钥

时间:2015-02-09 09:16:19

标签: mono openssl x509certificate2 certificate-store

我遇到一个问题,我无法使用内置工具certmgr将证书Private-Key导入monos certificatestore / keypairstore。

使用

将证书公共版本添加到商店可以正常工作
user@maschine:~certs$ certmgr -add -c My MyCert.crt
Mono Certificate Manager - version 2.10.8.1
Manage X.509 certificates and CRL from stores.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.

1 certificate(s) added to store My.

但是,尝试在异常中添加相应的私钥结束

user@maschine:~certs$ certmgr -add -c My MyCert.p12
Mono Certificate Manager - version 2.10.8.1
Manage X.509 certificates and CRL from stores.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.


Unhandled Exception: System.Security.Cryptography.CryptographicException: Invalid MAC - file may have been tampered!

首先尝试添加公共Verison(.cer)然后从私有版本(.p12)导入相应的私钥失败,但是 略有不同的例外:

user@maschine:~certs$ certmgr -add -c My MyCert.crt
Mono Certificate Manager - version 2.10.8.1
Manage X.509 certificates and CRL from stores.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.

1 certificate(s) added to store My.
user@maschine:~certs$ certmgr -importKey -c My MyCert.p12
Mono Certificate Manager - version 2.10.8.1
Manage X.509 certificates and CRL from stores.
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.

Unhandled Exception: System.Security.Cryptography.CryptographicException: Improperly protected user's key pairs in '/var/licapp/.config/.mono/keypairs'.

使用密码保护证书(并在命令中添加相应的参数)也没有帮助。

我在Debian Wheezy上使用mono V 2.10.8.1。有人知道如何在商店中添加处理证书并使用certmgr处理他们的密钥对吗?

我正在考虑一种解决方法,我只是将p12文件保存在我的应用程序之下而不使用商店,这将是一个更加不洁净的解决方案。但我无法将证书和KeyPair两者都添加到商店。

Certificats似乎没问题。在Windows下将它们添加到商店就可以了。

1 个答案:

答案 0 :(得分:4)

文档存在一些问题,而且工具的行为在某些地方有点奇怪或错误......

  1. 当密钥对目录的权限设置错误时 程序创建它们。 chmod 700 ~/.config/.mono/keypairs 解决了您列出的例外情况。
  2. 当您使用-importKey操作时,您仍然可以 必须指定对象类型证书,即使是手册页 不是说你必须使用对象类型。而且,没有 “私钥”对象类型,而是使用“证书”对象 输入(-c)。防爆。 certmgr -importKey -c -v -p p12password My CertAndKeyPair.p12为我提供了成功的信息。
  3. 在步骤2之后,证书/密钥将无法访问。导入P12后,导入DER编码的证书。防爆。 certmgr -add -c My Certificate.cer这应该使证书/密钥可用于您的.NET代码。
  4. 如果要将证书/密钥安装到机器商店(-m),则必须使用sudo