6

Это может показаться странным, но могу ли я быть корневым центром сертификации? Я имею в виду, у меня дома много компьютеров и умных устройств.

  1. Удаленный рабочий стол предупреждает о том, что сертификат не является доверенным, поскольку он выдается самим сервером. Я добавил его в доверенный корневой центр с помощью диспетчера сертификатов, но он все равно предупреждает.
  2. Когда я запускаю EXE из общей сетевой папки, он также предупреждает, что EXE не подписан.

  3. SSH также предупреждает о сертификатах

  4. Я также использую веб-сервер для собственного использования. Я знаю, что в этом нет необходимости, может быть лучше, если он работает по протоколу HTTPS, на случай, если кто-то прослушивает мой Wi-Fi.

Поэтому для этого я могу выдавать сертификаты, и все мои устройства должны принимать их как действительные, доверенные сертификаты. Вот мой только воображаемый сценарий:

  1. Установите программу генерации сертификатов на одном из моих ПК, который будет моим полномочием root.
  2. Создайте корневой сертификат и скопируйте его открытый ключ на все мои устройства, и пусть они примут его как доверенный корневой сертификат.
  3. Выпускает несколько сертификатов для локального использования, подписанных закрытым ключом корневого сертификата.
  4. Сертификаты, сгенерированные на шаге 3, принимаются в качестве действительных сертификатов всеми моими устройствами без какой-либо дополнительной громоздкой работы.

Возможны ли такие вещи, или я должен купить настоящие сертификаты? Еще раз, только для локального использования.

2 ответа2

3

Вы можете сделать это, как я сделал с этим после этого урока.

Создать частный центр сертификации в Linux

Из этого туториала вы узнаете, как создать свой собственный частный центр сертификации или центр сертификации. Это даст вам возможность подписать свои собственные сертификаты без необходимости платить кому-либо еще. Однако, поскольку ваш частный ЦС не будет доверен другим, он может выдавать предупреждения, когда другие его используют. Вам нужно будет добавить свой корневой сертификат на машины, которым вы хотите доверять свой CA.

Я написал аналогичную статью в 2008 году (Создание центра сертификации и сертификатов с OpenSSL), но это руководство заменяет инструкции по созданию CA в более старой версии. Установить предварительные условия

Я написал этот урок, используя Fedora 18. Единственное необходимое мне условие - OpenSSL.

su -c 'yum install openssl'
Create Directory Structure

mkdir /home/cg/myca

cd /home/cg/myca/

mkdir private certs newcerts conf export csr

echo '01' > serial

touch index.txt

По умолчанию мы будем запускать все команды в каталоге /home /cg /myca, если не указано иное. Файл конфигурации

vim /home/cg/myca/conf/caconfig.cnf

Этот файл будет служить конфигурационным файлом по умолчанию для CA. Это должно выглядеть примерно так:

[ ca ]
default_ca = CA_default

[ CA_default ]
dir = /home/cg/myca/
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/certs/cacert.pem
serial = $dir/serial
#crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
#RANDFILE = $dir/private/.rand
x509_extensions = usr_cert
#crl_extensions = crl_ext
default_days = 3650
#default_startdate = YYMMDDHHMMSSZ
#default_enddate = YYMMDDHHMMSSZ
#default_crl_days= 30
#default_crl_hours = 24
default_md = sha1
preserve = no
#msie_hack
policy = policy_match

[ policy_match ]
countryName = match
stateOrProvinceName = match
localityName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ req ]
default_bits = 4096 # Size of keys
default_keyfile = key.pem # name of generated keys
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
#input_password
#output_password
string_mask = nombstr # permitted characters
req_extensions = v3_req

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = New York
localityName = Locality Name (city, district)
localityName_default = New York
organizationName = Organization Name (company)
organizationName_default = Code Ghar
organizationalUnitName = Organizational Unit Name (department, division)
organizationalUnitName_default = IT
commonName = Common Name (hostname, FQDN, IP, or your name)
commonName_max = 64
commonName_default = CGIT
emailAddress = Email Address
emailAddress_max = 40
emailAddress_default = codeghar@example.com

[ req_attributes ]
#challengePassword = A challenege password
#challengePassword_min = 4
#challengePassword_max = 20
#unstructuredName = An optional company name

[ usr_cert ]
basicConstraints= CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#nsComment = ''OpenSSL Generated Certificate''
#nsCertType = client, email, objsign for ''everything including object signing''
subjectAltName=email:copy
issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl = 
#nsRenewalUrl =
#nsCaPolicyUrl = 
#nsSslServerName =

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:TRUE
#keyUsage = cRLSign, keyCertSign
#nsCertType = sslCA, emailCA
#subjectAltName=email:copy
#issuerAltName=issuer:copy
#obj=DER:02:03

[ crl_ext ]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always

Спасибо http://wwwneu.secit.at/web/documentation/openssl/openssl_cnf.html за помощь с этим файлом. Создать корневой сертификат

Вы можете использовать файл конфигурации (caconfig.cnf), который мы создали на предыдущем шаге, чтобы ответить на многие вопросы, задаваемые при создании сертификата. Просто выполните следующую команду и ответьте на вопросы. Большинство вопросов будут иметь значения по умолчанию, предоставленные в caconfig.cnf.

openssl req -new -x509 -days 3650 -config conf/caconfig.cnf -keyform PEM -keyout private/key.ca.cg.pem -outform PEM -out certs/crt.ca.cg.pem

Хотя мы указали число дней по умолчанию в файле caconfig.cnf, мы все равно должны указать флаг дней при использовании флага x509. Если мы этого не сделаем, сертификат будет создан со значением по умолчанию 30 дней. Благодаря Re: default_days проблема и OpenSSL req(1).

Если вы хотите указать свои собственные значения, вы можете вместо этого выполнить следующую команду.

openssl req -new -x509 -days 3650 -newkey rsa:4096 -extensions v3_ca -keyform PEM -keyout private/key.ca.cg.pem -outform PEM -out certs/crt.ca.cg.pem

Вам будет предложено ввести пароль. Убедитесь, что вы используете безопасную фразу-пароль и не забудьте ее. Вам также будут заданы другие актуальные вопросы. Ниже приведен пример выходных данных процесса.

Создание 4096-битного закрытого ключа RSA ........................................... ...................................++................................................ .................................................. .................................................. .................................................. .....................................++запись нового закрытого ключа в 'private/key.ca.cg.pem' Введите пароль PEM:

Проверка - введите пароль PEM:

Вам будет предложено ввести информацию, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, это то, что называется отличительным именем или DN. Есть довольно много полей, но вы можете оставить некоторые пустыми. Для некоторых полей будет значение по умолчанию,

Если вы введете «.», Поле останется пустым.

Название страны (двухбуквенный код) [США]: Название штата или провинции (полное название) [Нью-Йорк]: Название населенного пункта (город, район) [Нью-Йорк]: Название организации (компании) [Код Ghar]: Название подразделения организации ( отдел, отдел) [IT]: общее имя (имя хоста, полное доменное имя, IP-адрес или ваше имя) [CGIT]: адрес электронной почты [codeghar@example.com]:

Два файла, key.ca.cg.pem и crt.ca.cg.pem, будут созданы в каталогах $ dir/private и $ dir/certs соответственно. Убедитесь, что вы храните эти файлы в надежном месте и делаете их резервные копии.

crt.ca.cg.pem является вашим корневым сертификатом и будет использоваться для подписи всех остальных сертификатов. Проверить корневой сертификат

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

openssl x509 -in certs/crt.ca.cg.pem -inform pem -noout -text Экспорт корневого сертификата

Поскольку этот вновь созданный центр сертификации и его корневой сертификат не распознаются и не пользуются доверием на любом компьютере, вам необходимо импортировать корневой сертификат на все остальные компьютеры. По умолчанию ОС будет иметь список доверенных ЦС, и вам необходимо импортировать свой ЦС в этот список. Процесс варьируется для разных ОС. Windows

Корневой сертификат, который мы создали, имеет формат PEM. Для Windows он должен быть в формате DER. Отличным источником информации о различиях между ними являются сертификаты DER и CRT против CER против PEM и их преобразование.

openssl x509 - в сертификатах /crt.ca.cg.pem - outform der -out export /ca.cg.crt

Убедитесь, что сертификат был успешно создан.

openssl x509 -в экспорте /ca.cg.crt -информировать -noout -text

Получив экспортированный файл, скопируйте его на компьютер с Windows. Вы можете следовать инструкциям, приведенным в разделе Как импортировать доверенный корневой центр сертификации В Windows, чтобы импортировать сертификат в хранилище доверенных корневых центров сертификации на локальном компьютере.

Вы также можете экспортировать сертификат в формат PKCS12. Спасибо за импорт сертификата пользователя в хранилище сертификатов Windows за эту информацию.

openssl pkcs12 -export -out export/ca.cg.p12 -in certs/crt.ca.cg.pem -inkey private/key.ca.cg.pem

Вам будет предложено предоставить пароль, который вы использовали для создания корневого сертификата. Вам также будет предложено ввести новый «пароль для экспорта».

Скопируйте файл .p12 в Windows и дважды щелкните его. Откроется мастер и поможет вам установить его. Заключение

Процесс создания ЦС очень прост. Далее я напишу о подписании запроса на сертификат.

1

Там хороший учебник для создания собственного центра сертификации на datacenteroverlords.com.

Процесс создания собственного центра сертификации довольно прост:

  1. Создать личный ключ
  2. Self-знак
  3. Установите корневой CA на свои рабочие станции.

После того, как вы это сделаете, каждое устройство, которым вы управляете через HTTPS, просто должно иметь свой собственный сертификат, созданный с помощью следующих шагов:

  1. Создать CSR для устройства
  2. Подпишите CSR с корневым ключом CA

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .