2012-02-12 2 views
0

Я пытаюсь создать внутренний центр сертификации внутри моей компании. Одной из основных целей этого является предоставление сертификатов нашим клиентам, которые они будут использовать для установления TLS-соединений между нашими клиентскими и серверными приложениями (как на базе ОС Windows). Сейчас я работаю при следующих ограничениях:Сертификат X509 для конкретного приложения в Windows?

  • Сертификат сервера выдается к каждому из наших клиентов, серверов, и должен быть установлен на сервере клиента таким образом, что наш Application Server можно использовать для установления сеансов TLS.
  • Доверенный корневой сертификат для нашего ЦС будет упакован вместе с нашим клиентским приложением и должен быть установлен без помех вместе с приложением таким образом, чтобы клиентское приложение могло использовать его для проверки сертификата сервера. (Предполагается, что установщик имеет административный доступ на клиентской машине.)
  • Доверенный корневой сертификат должен быть доступен любому пользователю клиентского приложения на клиентской машине и не должен запрашивать у пользователя пароль.
  • Я смущаюсь разместить доверенный корневой сертификат в разделе «Доверенные корневые центры сертификации» в хранилище сертификатов «Локальная машина», поскольку он может затем использоваться в большей области, чем просто проверка подлинности нашего приложения (для аутентификации веб-страниц для IE, например.) В случае, если наш корневой сертификат скомпрометирован, я предпочел бы ограничить ущерб нашему собственному приложению.

Где и как я должен устанавливать сертификат сервера и доверенный корневой сертификат на сервере и на клиентских компьютерах (опять же, используя ОС Windows), чтобы эти ограничения выполнялись?

ответ

0

папка Common Data Application является подходящим местом как для сертификата CA и сертификата сервера (не сервер закрытого ключа, хотя!)

«как» установки зависит от упаковки и распределения ме- -для WiX, вы бы использовать что-то вроде:

<Directory Id="CommonAppDataFolder" Name="ComApptDt" > 
    <Directory Id="ProductAppData" Name="ProductName" > 
    <!-- add reference to the appropriate certificate here --> 
    </Directory> 
</Directory> 

Определение местоположения папки Common AppData в коде зависит от языка программирования и рамок. В .NET есть перечисление the Environment.SpecialFolders. Для родного C++ How do I get the application data path in Windows using C++? - хорошее место для начала.