2012-05-25 7 views
1

Я хотел бы создать сертификат для подписи программного обеспечения нашей компании. Инструмент, который я использую для этого (keytool из Java SDK) ожидает различающееся имя в следующем формате:Как выбрать название сертификата компании X.509?

CN=commonName, OU=organizationalUnit, O=organizationName, L=city, S=state, C=countryCode 

Если я просто хочу сертификат для моей компании (не для какого-либо конкретного человека в нем), я должен использовать

CN=MyCompany, C=AT 

или

O=MyCompany, C=AT 

как отличительное имя? Последнее будет иметь больше смысла (поскольку MyCompany - это название организации), но я не знаю, является ли оно «правильным», чтобы оставить commonName пустым.

+0

Общепринятой практикой является ваше полное доменное имя в CN. – Stefan

+1

@Stefan это относится только к сертификатам, используемым в SSL/TLS (и даже там CN может быть пустым, а доменное имя может быть помещено в расширение SubjectAlternativeName). Для подписи кода это не имеет смысла. –

+0

«Общепринятая практика заключается в том, чтобы поместить ваше полное доменное имя в CN» - эта практика устарела в [Базовые требования к CA/B] (https://cabforum.org/baseline-requirements-documents/) (см. Раздел 9). Имена должны всегда находиться в 'SAN' (и если присутствует' CN', он также должен быть указан в 'SAN'). Я не верю, что RFC (2818, 5280, 6125) имеют аналогичные ограничения (но они бывают быстрыми и свободными в любом случае). Однако я получаю впечатление, что @Heinzi не говорит о сертификатах конечных объектов. – jww

ответ

2

CommonName может содержать название вашей компании. Или вы можете оставить его пустым - это не имеет значения, поскольку стандарт не имеет требования к числу элементов в SubjectName, и не существует стандарта для формата CommonName.

Однако вся ваша задача не имеет большого смысла. Вы собираетесь создать самозаверяющий сертификат для подписания вашего программного обеспечения, но валидатор не примет такую ​​подпись. Можно было бы ожидать, что ваше программное обеспечение будет подписано с сертификатом, выпущенным уполномоченным органом сертификации.

+0

Android требует подписанного кода, но явно принимает самозаверяющие сертификаты: 'Вы можете использовать самозаверяющие сертификаты для подписывания своих приложений. Никакой сертификат не нужен. '([Источник] (http://developer.android.com/guide/publishing/app-signing.html)) – Heinzi

+0

@Heinzi Если вы спрашиваете об Android, укажите это в тегах. Android - особый случай - содержимое сертификата вообще не имеет значения, и важно то, что сертификат действителен в течение 25 лет и что ключ остается неизменным. Инфраструктура Android использует подпись в качестве доказательства авторства, но ее не интересует. –

+0

Действительно ли это имеет значение? Разве я не должен выбирать DN, когда у меня есть сертификат с сертификатом CA? – Heinzi

Смежные вопросы