2015-02-09 5 views
3

У меня возникла проблема, когда я не могу импортировать сертификаты Private-Key в monos certatestore/keypairstore, используя встроенный инструмент certmgr.Как импортировать закрытый ключ самозаверяющего сертификата с помощью certmgr в mono

Добавление сертификатов общедоступную версию в магазине работает отлично, используя

[email protected]:~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. 

Однако попытка добавить соответствующий секретный ключ заканчивается в Exception

[email protected]:~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! 

Попытка добавить Public Verison (.cer), а затем импорт соответствующего Private-Key из закрытой версии (.p12) не выполняется, но с немного отличается:

[email protected]:~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. 
[email protected]:~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'. 

Защита сертификата паролем (и добавление соответствующего параметра в команду) также не помогает.

Я использую mono V 2.10.8.1 на Debian Wheezy. Кто-нибудь знает, как добавить дескрипторы сертификатов в магазины и укрепить свои ключевые пары с помощью certmgr?

Я рассматриваю обходной путь, когда я просто держу p12-файлы под моим приложением, не используя магазины, что было бы гораздо более нечистым решением, я думаю. Но я просто не могу добавить оба, Сертификат и KeyPair в магазин.

Сертификаты кажутся нормально кстати. Добавление их в магазин под Windows работает отлично.

ответ

3

Есть некоторые проблемы с документацией и поведением инструмента является немного странными или неправильно в местах ...

  1. Права доступа к каталогу пары ключей установлены неправильно, когда программа создает их. chmod 700 ~/.config/.mono/keypairs разрешен исключение, указанное в списке.
  2. Когда вы используете действие -importKey, вы все равно должны указать сертификат типа объекта, даже если справочная страница не говорит, что вам нужно использовать тип объекта. Кроме того, нет типа «частный ключ», но вместо этого используйте объект «сертификат» (-c). Ex. certmgr -importKey -c -v -p p12password My CertAndKeyPair.p12 дает мне успешное сообщение.
  3. После шага 2 сертификат/ключ останется недоступным. После импорта P12 импортируйте сертификат, закодированный DER. Ex. certmgr -add -c My Certificate.cer Это должно сделать сертификат/ключ доступным для вашего кода .NET.
  4. Если вы хотите установить сертификаты/ключи в хранилище машин (-m), вы должны использовать sudo.